curl --request GET \
--url https://api.tryfuse.ai/api/v1/business/lists/{listId}/rows \
--header 'Authorization: Basic <encoded-value>'import requests
url = "https://api.tryfuse.ai/api/v1/business/lists/{listId}/rows"
headers = {"Authorization": "Basic <encoded-value>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Basic <encoded-value>'}};
fetch('https://api.tryfuse.ai/api/v1/business/lists/{listId}/rows', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));{
"entityType": "contactList",
"data": [
{
"id": "68a1f2c89c41d20014b3e955",
"firstName": "Ada",
"lastName": "Nwosu",
"linkedinUrl": "https://www.linkedin.com/in/ada-nwosu",
"jobTitle": "Chief Financial Officer",
"companyName": "Brightpay",
"companyDomain": "brightpay.com",
"emails": [
{
"email": "ada@brightpay.com",
"status": "valid",
"isPersonal": false
}
],
"phones": [
{
"phoneNumber": "+13015023231",
"status": "valid"
}
],
"primaryEmail": "ada@brightpay.com",
"primaryPhone": "+13015023231",
"icpMatch": true,
"engagement": "never_engaged",
"source": "prospect_search",
"lists": [
{
"id": "68a1f20b9c41d20014b3e901",
"name": "Q3 Fintech CFOs"
}
],
"location": {
"city": "san francisco",
"state": "california",
"country": "united states"
},
"columnValues": {
"68a1f3009c41d20014b3e9a1": "warm"
}
},
{
"id": "68a1f2c89c41d20014b3e956",
"firstName": "Sam",
"lastName": "Rivera",
"linkedinUrl": null,
"jobTitle": null,
"companyName": "Brightpay",
"companyDomain": null,
"emails": [],
"phones": [],
"primaryEmail": null,
"primaryPhone": null,
"icpMatch": null,
"engagement": "never_engaged",
"source": "csv_upload",
"lists": [],
"location": null,
"columnValues": {}
}
],
"pagination": {
"pageNum": 1,
"totalPages": 206,
"totalRecords": 412
}
}{
"error": {
"code": "<string>",
"message": "<string>",
"param": "<string>",
"doc_url": "<string>",
"request_id": "<string>"
}
}{
"error": {
"code": "<string>",
"message": "<string>",
"param": "<string>",
"doc_url": "<string>",
"request_id": "<string>"
}
}{
"error": {
"code": "<string>",
"message": "<string>",
"param": "<string>",
"doc_url": "<string>",
"request_id": "<string>"
}
}{
"error": {
"code": "<string>",
"message": "<string>",
"param": "<string>",
"doc_url": "<string>",
"request_id": "<string>"
}
}{
"error": {
"code": "<string>",
"message": "<string>",
"param": "<string>",
"doc_url": "<string>",
"request_id": "<string>"
}
}{
"error": {
"code": "<string>",
"message": "<string>",
"param": "<string>",
"doc_url": "<string>",
"request_id": "<string>"
}
}{
"error": {
"code": "<string>",
"message": "<string>",
"param": "<string>",
"doc_url": "<string>",
"request_id": "<string>"
}
}{
"error": {
"code": "<string>",
"message": "<string>",
"param": "<string>",
"doc_url": "<string>",
"request_id": "<string>"
}
}{
"error": {
"code": "<string>",
"message": "<string>",
"param": "<string>",
"doc_url": "<string>",
"request_id": "<string>"
}
}List a list's contacts (with ids and column values)
Pages through a list’s rows. entityType says which shape data holds: a contact list’s rows carry the contact id (the id members, columns/{columnId}/values, enrich and crm-push accept), the discovered emails and phones with their validation status, the primaries, ICP match, campaign engagement, acquisition source, the other lists the contact belongs to, its location and columnValues (custom and smart column cells keyed by column id); a company list’s rows carry the company’s own fields (name, domain, industry, employeeCount, revenue, headquartersCountry) plus engagement, source, location and columnValues. LinkedIn URLs come back as full https URLs. sortBy/sortOrder sort (an unrecognised sort key falls back to the list’s default order). filters is a URL-encoded JSON object in the row-filter language: text keys take an array of accepted values or {include, exclude} — {"companyName":["pomelo"]}, {"country":["argentina"]}; enrichedEmail/enrichedPhone/emailValidity take {"include":[...]} of their statuses; icpMatch takes ["yes"] or ["no"]; customColumns maps a column id to {"dataType":"string","include":[...]}. Two keys are narrower than their names suggest: keywords is a wildcard match on the job title alone (* and ? are the only wildcards; other regex characters are rejected) and otherLists matches other lists by NAME, not by id. An unknown key or a wrong value shape answers 422 INVALID_ROW_FILTERS naming the offending key.
Errors:
404LIST_NOT_FOUND— No list with that id is visible to the token owner.422INVALID_ROW_FILTERS— filters is not a JSON object, carries an unknown key, a value has the wrong shape, orkeywordscarries one of the regex metacharacters . ^ $ + ( ) [ ] | \ (the offending key is named in the message).422VALIDATION_FAILED— limit/pageNum/sortOrder out of range, or filters longer than 8000 characters.429RATE_LIMITED— The lists rate bucket (120 requests/minute, 10,000/day per token owner) is exhausted.
Requires one of the following token scopes: lists.
curl --request GET \
--url https://api.tryfuse.ai/api/v1/business/lists/{listId}/rows \
--header 'Authorization: Basic <encoded-value>'import requests
url = "https://api.tryfuse.ai/api/v1/business/lists/{listId}/rows"
headers = {"Authorization": "Basic <encoded-value>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Basic <encoded-value>'}};
fetch('https://api.tryfuse.ai/api/v1/business/lists/{listId}/rows', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));{
"entityType": "contactList",
"data": [
{
"id": "68a1f2c89c41d20014b3e955",
"firstName": "Ada",
"lastName": "Nwosu",
"linkedinUrl": "https://www.linkedin.com/in/ada-nwosu",
"jobTitle": "Chief Financial Officer",
"companyName": "Brightpay",
"companyDomain": "brightpay.com",
"emails": [
{
"email": "ada@brightpay.com",
"status": "valid",
"isPersonal": false
}
],
"phones": [
{
"phoneNumber": "+13015023231",
"status": "valid"
}
],
"primaryEmail": "ada@brightpay.com",
"primaryPhone": "+13015023231",
"icpMatch": true,
"engagement": "never_engaged",
"source": "prospect_search",
"lists": [
{
"id": "68a1f20b9c41d20014b3e901",
"name": "Q3 Fintech CFOs"
}
],
"location": {
"city": "san francisco",
"state": "california",
"country": "united states"
},
"columnValues": {
"68a1f3009c41d20014b3e9a1": "warm"
}
},
{
"id": "68a1f2c89c41d20014b3e956",
"firstName": "Sam",
"lastName": "Rivera",
"linkedinUrl": null,
"jobTitle": null,
"companyName": "Brightpay",
"companyDomain": null,
"emails": [],
"phones": [],
"primaryEmail": null,
"primaryPhone": null,
"icpMatch": null,
"engagement": "never_engaged",
"source": "csv_upload",
"lists": [],
"location": null,
"columnValues": {}
}
],
"pagination": {
"pageNum": 1,
"totalPages": 206,
"totalRecords": 412
}
}{
"error": {
"code": "<string>",
"message": "<string>",
"param": "<string>",
"doc_url": "<string>",
"request_id": "<string>"
}
}{
"error": {
"code": "<string>",
"message": "<string>",
"param": "<string>",
"doc_url": "<string>",
"request_id": "<string>"
}
}{
"error": {
"code": "<string>",
"message": "<string>",
"param": "<string>",
"doc_url": "<string>",
"request_id": "<string>"
}
}{
"error": {
"code": "<string>",
"message": "<string>",
"param": "<string>",
"doc_url": "<string>",
"request_id": "<string>"
}
}{
"error": {
"code": "<string>",
"message": "<string>",
"param": "<string>",
"doc_url": "<string>",
"request_id": "<string>"
}
}{
"error": {
"code": "<string>",
"message": "<string>",
"param": "<string>",
"doc_url": "<string>",
"request_id": "<string>"
}
}{
"error": {
"code": "<string>",
"message": "<string>",
"param": "<string>",
"doc_url": "<string>",
"request_id": "<string>"
}
}{
"error": {
"code": "<string>",
"message": "<string>",
"param": "<string>",
"doc_url": "<string>",
"request_id": "<string>"
}
}{
"error": {
"code": "<string>",
"message": "<string>",
"param": "<string>",
"doc_url": "<string>",
"request_id": "<string>"
}
}Authorizations
Your API token (af_…) as the Basic-auth username, with an empty password.
Path Parameters
24-character hex id of the list (from GET /business/lists).
Query Parameters
Page size: how many rows to return per page (1-1000, default 100).
1 <= x <= 10001-based page number (default 1).
x >= 1Field to sort rows by; it is IGNORED unless sortOrder is sent with it. Contact lists: any field on the contact record — the index-backed and therefore fast ones are firstName, lastName, jobTitle, createdAt, address.city and address.country (updatedAt carries NO index on the contact collection, so it is accepted but sorts as a blocking in-memory sort); a company field prefixed with company., where the accepted values are exactly company.name, company.domain, company.industry, company.country, company.type, company.revenue, company.linkedInHeadCount, company.address.city, company.address.state and company.address.country; or customColumns_ for a custom/smart column. Company lists: a company field by its own name (name, domain, industry, revenue, linkedInHeadCount) or customColumns_. An unrecognised key is accepted and falls back to the list's default order rather than erroring.
1 - 100Sort direction: asc (ascending) or desc (descending). Required for sortBy to take effect — without it the rows keep their default order.
asc, desc URL-encoded JSON object (max 8000 characters) narrowing which rows are returned, e.g. {"companyName":["pomelo"]} or {"country":["argentina"]}. Text keys (name, title, dept, level, industryName, country, state, personalLocation, companyName, companyIndustry, companyHeadQuartersCountry, companyLocation, website, campaignEngagement, otherLists) take an array of accepted values, e.g. {"companyName":["pomelo"]} or {"country":["argentina"]}, or {"include":[...],"exclude":[...]} — otherLists takes list NAMES, not ids; numberOfEmployees takes headcount ranges the same way but as STRINGS ("51-200", "10001+" or a bare head count "500" — an unquoted JSON number answers 500) and revenue a plain number; keywords (a wildcard match on the job title only) and linkedinUrl take one string; enrichedEmail, enrichedPhone and emailValidity take {"include":[...]} of their statuses; icpMatch takes ["yes"] or ["no"]; customColumns maps a column id to {"dataType":"string","include":[...]}, {"dataType":"boolean","value":true} or {"dataType":"number","rangeMin":1,"rangeMax":10}. Company lists honour companyName, companyIndustry, companyHeadQuartersCountry, website, numberOfEmployees, campaignEngagement and customColumns. Every key is optional; an unknown key or a wrong value shape is rejected rather than ignored. Values inside one key are OR-joined and different keys are AND-ed. VALUES ARE NOT VALIDATED: level, industryName, country, state, website and companyHeadQuartersCountry are matched as whole values and campaignEngagement, icpMatch and enum cells as exact strings, so a value in the wrong vocabulary is accepted and silently matches nothing — each key's own description names its vocabulary and the endpoint that serves it. Malformed JSON, an unknown key or a wrong value shape answers 422 INVALID_ROW_FILTERS.
8000