People Search API
People Search Ai ark API
Search professional profiles with account, contact, and saved-list filters.
POST/v1/run/people_search.ai_ark
Requests
-
30d
Pricing
One price, in dollars
Call it
Make your first request
import os, requests res = requests.post( "https://api.getanyapi.com/v1/run/people_search.ai_ark", headers={"Authorization": f"Bearer {os.environ['ANYAPI_KEY']}"}, json={}, ) print(res.json())
Sample response
{
"data": {
"page": 29,
"people": [
{
"birthDate": "2024-01-15T09:30:00Z",
"careerStartUtc": 42,
"city": "San Francisco",
"companyAcquisitionCount": 12500,
"companyAcquisitions": [
{
"announcedUtc": 42,
"imageKey": "https://example.com/image.jpg",
"name": "Example title",
"recordId": "a1b2c3d4",
"role": "example"
}
],
"companyAddress": "Acme Inc",
"companyCity": "Acme Inc",
"companyContinent": "Acme Inc",
"companyCountry": "Acme Inc",
"companyCrunchbaseUrl": "https://example.com/page",
"companyDescription": "Acme Inc",
"companyDomain": "example.com",
"companyDomainLtd": "example.com",
"companyEmployeeCount": 12500,
"companyEmployeeRangeMin": 42,
"companyFacebookUrl": "https://example.com/page",
"companyFoundedYear": 2024,
"companyId": "Acme Inc",
"companyImage": "https://example.com/image.jpg",
"companyIndustries": [
"Acme Inc"
],
"companyIndustry": "Acme Inc",
"companyKeywords": [
"Acme Inc"
],
"companyLanguages": [
"Acme Inc"
],
"companyLatitude": 37.7749,
"companyLegalName": "Acme Inc",
"companyLinkedinUrl": "https://example.com/page",
"companyLocations": [
{
"address": "123 Main St",
"city": "San Francisco",
"continent": "example",
"country": "US",
"latitude": 37.7749,
"longitude": -122.4194,
"postalCode": "94107",
"state": "CA",
"street": "123 Main St"
}
],
"companyLongitude": -122.4194,
"companyNaics": [
"Acme Inc"
],
"companyName": "Acme Inc",
"companyOverview": "Acme Inc",
"companyPostalCode": "Acme Inc",
"companyRevenueMax": 20,
"companyRevenueMin": 20,
"companyRevenueRange": "Acme Inc",
"companySeoDescription": "Acme Inc",
"companyStartUtc": 42,
"companyState": "Acme Inc",
"companyStreet": "Acme Inc",
"companySubOrganizations": [
"Acme Inc"
],
"companyTechnologies": [
{
"category": "general",
"name": "Example title"
}
],
"companyTwitterUrl": "https://example.com/page",
"companyType": "Acme Inc",
"companyUpdatedUtc": 42,
"companyWebsiteUrl": "https://example.com/page",
"connectionCount": 12500,
"country": "US",
"creator": true,
"departments": [
"example"
],
"educations": [
{
"degreeName": "Example title",
"endUtc": 42,
"fieldOfStudy": "example",
"grade": "example",
"schoolId": null,
"schoolImage": null,
"schoolName": "Example title",
"schoolUrl": "https://example.com/page",
"startUtc": 42
}
],
"experience": [
{
"companyEmployeeRangeMax": 42,
"companyEmployeeRangeMin": 42,
"companyId": "Acme Inc",
"companyImage": "https://example.com/image.jpg",
"companyLinkedinUrl": "https://example.com/page",
"companyName": "Acme Inc",
"endUtc": 42,
"positions": [
null
],
"startUtc": 42
}
],
"facebookUrl": "https://example.com/page",
"firstName": "Alex",
"followable": null,
"followerCount": 12500,
"fullName": "Alex Rivera",
"functions": [
"example"
],
"githubUrl": "https://example.com/page",
"headline": "Example title",
"hiring": true,
"image": "https://example.com/image.jpg",
"industry": "general",
"influencer": true,
"lastName": "Rivera",
"linkedinHandle": "https://example.com/page",
"linkedinUrl": "https://example.com/page",
"location": "example",
"locationPosition": null,
"locationShort": "example",
"middleName": "Example title",
"networkInfluencer": true,
"openToWork": true,
"premium": true,
"previousJobTitles": null,
"primaryLanguage": "en",
"primaryLanguageCountry": "US",
"profileBackground": null,
"profileId": "a1b2c3d4",
"profileLanguages": null,
"seniority": "example",
"skills": [
"example"
],
"state": "CA",
"subDepartments": [
"example"
],
"summary": "A short example description of this item.",
"supportedLocales": [
{
"country": "US",
"language": "en"
}
],
"title": "Example title",
"titleStartUtc": 42,
"twitterUrl": "https://example.com/page",
"updatedUtc": 42,
"verified": true
}
],
"size": 42,
"total": 12500,
"totalPages": 12500
},
"found": true,
"reason": "not_found"
}Response interface
interface PeopleSearchAiArkResponse {
data: {
page: number;
people: {
birthDate?: string;
careerStartUtc?: number;
city?: string;
companyAcquisitionCount?: number;
companyAcquisitions?: {
announcedUtc?: number;
imageKey?: string;
name?: string;
recordId?: string;
role?: string;
}[];
companyAddress?: string;
companyCity?: string;
companyContinent?: string;
companyCountry?: string;
companyCrunchbaseUrl?: string;
companyDescription?: string;
companyDomain?: string;
companyDomainLtd?: string;
companyEmployeeCount?: number;
companyEmployeeRangeMin?: number;
companyFacebookUrl?: string;
companyFoundedYear?: number;
companyId?: string;
companyImage?: string;
companyIndustries?: string[];
companyIndustry?: string;
companyKeywords?: string[];
companyLanguages?: string[];
companyLatitude?: number;
companyLegalName?: string;
companyLinkedinUrl?: string;
companyLocations?: {
address?: string;
city?: string;
continent?: string;
country?: string;
latitude?: number;
longitude?: number;
postalCode?: string;
state?: string;
street?: string;
}[];
companyLongitude?: number;
companyNaics?: string[];
companyName?: string;
companyOverview?: string;
companyPostalCode?: string;
companyRevenueMax?: number;
companyRevenueMin?: number;
companyRevenueRange?: string;
companySeoDescription?: string;
companyStartUtc?: number;
companyState?: string;
companyStreet?: string;
companySubOrganizations?: string[];
companyTechnologies?: {
category?: string;
name?: string;
}[];
companyTwitterUrl?: string;
companyType?: string;
companyUpdatedUtc?: number;
companyWebsiteUrl?: string;
connectionCount?: number;
country?: string;
creator?: boolean;
departments?: string[];
educations?: {
degreeName?: string;
endUtc?: number;
fieldOfStudy?: string;
grade?: string;
schoolId?: any;
schoolImage?: any;
schoolName?: string;
schoolUrl?: string;
startUtc?: number;
}[];
experience?: {
companyEmployeeRangeMax?: number;
companyEmployeeRangeMin?: number;
companyId?: string;
companyImage?: string;
companyLinkedinUrl?: string;
companyName?: string;
endUtc?: number;
positions?: {
companyName?: string;
description?: string;
employmentType?: string;
endUtc?: number;
location?: string;
startUtc?: number;
title?: string;
}[];
startUtc?: number;
}[];
facebookUrl?: string;
firstName?: string;
followable?: any;
followerCount?: number;
fullName: string;
functions?: string[];
githubUrl?: string;
headline?: string;
hiring?: boolean;
image?: string;
industry?: string;
influencer?: boolean;
lastName?: string;
linkedinHandle?: string;
linkedinUrl: string;
location?: string;
locationPosition?: any;
locationShort?: string;
middleName?: string;
networkInfluencer?: boolean;
openToWork?: boolean;
premium?: boolean;
previousJobTitles?: any;
primaryLanguage?: string;
primaryLanguageCountry?: string;
profileBackground?: any;
profileId?: string;
profileLanguages?: any;
seniority?: string;
skills?: string[];
state?: string;
subDepartments?: string[];
summary?: string;
supportedLocales?: {
country?: string;
language?: string;
}[];
title?: string;
titleStartUtc?: number;
twitterUrl?: string;
updatedUtc?: number;
verified?: boolean;
}[];
size: number;
total: number;
totalPages: number;
} | null;
found: boolean;
reason?: "not_found";
}Full parameter and response reference - every field, type, and example for this endpoint.
Reference
Request, response, and price
Last verified 2026-09-20 · uptime and latency measured over 30dPOST /v1/run/people_search.ai_ark
curl -X POST https://api.getanyapi.com/v1/run/people_search.ai_ark \
-H "Authorization: Bearer $ANYAPI_KEY" \
-H "Content-Type: application/json" \
-d '{"page":0,"size":1}'| Field | Type | Example value |
|---|---|---|
| Request body | ||
| account | string | Company-level filters, keyed by filter name. Accepted names: domain, employeeSize, foundedYear, funding, geoLocation, industries, keyword, language, linkedin, metric, naics, name, phoneNumber, productAndServices, retailSize, revenue, socialMedia, socialMediaLink, technologies, technology, type, url, location. Any other name is rejected. Most names take {"any"|"all": {"include": [...], "exclude": [...]}}, for example {"type": {"any": {"include": ["PUBLIC_COMPANY"]}}}. The any/all object goes INSIDE the filter name, never at the top of account. Size and money filters (employeeSize, foundedYear, revenue, retailSize) instead take {"type": "RANGE", "range": {"start": 50, "end": 200}} or {"type": "ALL"|"NONE"}; geoLocation takes {"position": {"lat": 0, "lng": 0}, "radius": 50, "unit": "km"|"mi"}; keyword takes {"any"|"all": {"include"|"exclude": {"content": ["..."], "sources": [{"mode": "WORD"|"SMART"|"STRICT", "source": "NAME"|"KEYWORD"|"SEO"|"DESCRIPTION"|"INDUSTRY"}]}}}. |
| contact | string | Person-level filters, keyed by filter name. Accepted names: certification, certifications, company, contactLanguage, contactLocation, currentCompany, department, departmentAndFunction, education, experience, fullName, function, keyword, language, linkedin, location, name, pastCompany, profileBadge, seniority, skill, skills, socialMedia, socialMediaFollower, socialMediaLink, socialProfile, title. Any other name is rejected. Names take {"any"|"all": {"include": [...], "exclude": [...]}}, with the any/all object INSIDE the filter name rather than at the top of contact. Free-text search goes through keyword, which takes {"any"|"all": {"include"|"exclude": {"content": ["..."], "sources": [{"mode": "WORD"|"SMART"|"STRICT", "source": "HEADLINE"|"SUMMARY"|"ORGANIZATION"|"SKILL"|"WORK_HISTORY_DESCRIPTION"|"EDUCATION_DESCRIPTION"|"CERTIFICATION"|"PUBLICATION"|"PATENT"|"AWARD"|"COURSE"|"PROJECTS"|"VOLUNTEERING"|"LANGUAGE_SKILL"|"TEST_SCORE"}]}}}, for example {"keyword": {"any": {"include": {"content": ["engineer"], "sources": [{"mode": "SMART", "source": "HEADLINE"}]}}}}. |
| lists | string | AI Ark saved-list filter expression. |
| page | integer | 0Zero-based result page. |
| size | integer | 1Maximum people to return on this page. |
| Response | ||
| data | object | Normalized people and page metadata, or null when no people matched. |
| data.page | integer | Zero-based page number returned by the source. |
| data.people | object[] | People returned on this page. |
| data.people[].birthDate | string | Birthday as published on the profile, in YYYY-MM-DD form. LinkedIn lets a member hide the year, and the source encodes that as the placeholder year 1600 - treat the year as unknown when it reads 1600 rather than as a real date. |
| data.people[].careerStartUtc | integer | UTC epoch timestamp in seconds (Unix time). Multiply by 1000 for a JS Date in milliseconds. |
| data.people[].city | string | Location city. |
| data.people[].companyAcquisitionCount | integer | Number of acquisitions the source records for the current company. |
| data.people[].companyAcquisitions | object[] | Acquisitions the source records for the current company, with the role telling you which side the company was on. |
| data.people[].companyAcquisitions[].announcedUtc | integer | UTC epoch timestamp in seconds (Unix time). Multiply by 1000 for a JS Date in milliseconds. |
| data.people[].companyAcquisitions[].imageKey | string | The source's internal image key for the counterparty. It is a bare key, not a URL. |
| data.people[].companyAcquisitions[].name | string | Counterparty organization name. |
| data.people[].companyAcquisitions[].recordId | string | The source's own slug for the counterparty organization. |
| data.people[].companyAcquisitions[].role | string | The current company's side of the deal, for example acquiree. |
| data.people[].companyAddress | string | Current company headquarters address as published by the source. |
| data.people[].companyCity | string | Current company headquarters city. |
| data.people[].companyContinent | string | Current company headquarters continent. |
| data.people[].companyCountry | string | Current company headquarters country. |
| data.people[].companyCrunchbaseUrl | string | Current company's Crunchbase URL. |
| data.people[].companyDescription | string | Current company description. |
| data.people[].companyDomain | string | Current company domain. |
| data.people[].companyDomainLtd | string | The source's second copy of the current company's domain. Usually identical to companyDomain; it can differ when the source resolves a redirect or a country domain differently, so compare the two rather than assuming they match. |
| data.people[].companyEmployeeCount | integer | Estimated employees at the current company. |
| data.people[].companyEmployeeRangeMin | integer | Lower bound of the current company's published employee range. |
| data.people[].companyFacebookUrl | string | Current company's canonical Facebook URL. |
| data.people[].companyFoundedYear | integer | Year the current company was founded. |
| data.people[].companyId | string | The source's own record identifier for the current company, exposed so you can trace a result back to the record it came from. |
| data.people[].companyImage | string | Current company logo URL. This is a SIGNED, EXPIRING image-proxy URL - the path carries an exp: epoch roughly five days out - so fetch and store the image promptly rather than storing this URL. |
| data.people[].companyIndustries | string[] | Additional industries for the current company. |
| data.people[].companyIndustry | string | Current company's primary industry. |
| data.people[].companyKeywords | string[] | Keywords describing the current company. |
| data.people[].companyLanguages | string[] | Languages the current company publishes in. |
| data.people[].companyLatitude | number | Current company headquarters latitude in decimal degrees. |
| data.people[].companyLegalName | string | Current company's registered legal name. |
| data.people[].companyLinkedinUrl | string | Current company's canonical LinkedIn URL. |
| data.people[].companyLocations | object[] | Every office the source lists for the current company, including the headquarters already reported in the companyCountry/companyCity fields. |
| data.people[].companyLocations[].address | string | Office address as published by the source. |
| data.people[].companyLocations[].city | string | Office city. |
| data.people[].companyLocations[].continent | string | Office continent. |
| data.people[].companyLocations[].country | string | Office country. |
| data.people[].companyLocations[].latitude | number | Office latitude in decimal degrees. |
| data.people[].companyLocations[].longitude | number | Office longitude in decimal degrees. |
| data.people[].companyLocations[].postalCode | string | Office postal code. |
| data.people[].companyLocations[].state | string | Office state or region. |
| data.people[].companyLocations[].street | string | Office street or neighbourhood line. |
| data.people[].companyLongitude | number | Current company headquarters longitude in decimal degrees. |
| data.people[].companyNaics | string[] | NAICS codes for the current company. |
| data.people[].companyName | string | Current company name. |
| data.people[].companyOverview | string | Longer overview of the current company. Overlaps companyDescription but is a separately maintained blurb and is often longer or more current. |
| data.people[].companyPostalCode | string | Current company headquarters postal code. |
| data.people[].companyRevenueMax | integer | Upper bound of the current company's estimated annual revenue in USD. |
| data.people[].companyRevenueMin | integer | Lower bound of the current company's estimated annual revenue in USD. |
| data.people[].companyRevenueRange | string | The same annual revenue estimate as a single hyphenated range string, for example 500000000-1000000000. It duplicates companyRevenueMin and companyRevenueMax; use those for arithmetic. |
| data.people[].companySeoDescription | string | The meta description the source scraped from the current company's website. It is site copy, not the source's own writing, so it may be in another language or out of date. |
| data.people[].companyStartUtc | integer | UTC epoch timestamp in seconds (Unix time). Multiply by 1000 for a JS Date in milliseconds. |
| data.people[].companyState | string | Current company headquarters state or region. |
| data.people[].companyStreet | string | Current company headquarters street or neighbourhood line. |
| data.people[].companySubOrganizations | string[] | The source's own record identifiers for the current company's sub-organizations, exposed so you can look each one up in the company endpoints. |
| data.people[].companyTechnologies | object[] | Technologies detected on the current company's web presence. |
| data.people[].companyTechnologies[].category | string | Technology category. |
| data.people[].companyTechnologies[].name | string | Technology name. |
| data.people[].companyTwitterUrl | string | Current company's canonical X (Twitter) URL. |
| data.people[].companyType | string | Current company's organization type. |
| data.people[].companyUpdatedUtc | integer | UTC epoch timestamp in seconds (Unix time). Multiply by 1000 for a JS Date in milliseconds. |
| data.people[].companyWebsiteUrl | string | Current company website URL. |
| data.people[].connectionCount | integer | LinkedIn connection count. |
| data.people[].country | string | Location country. |
| data.people[].creator | boolean | Whether the profile is in LinkedIn creator mode. |
| data.people[].departments | string[] | Departments the current role belongs to. |
| data.people[].educations | object[] | Education history listed on the profile. |
| data.people[].educations[].degreeName | string | Degree earned. |
| data.people[].educations[].endUtc | integer | UTC epoch timestamp in seconds (Unix time). Multiply by 1000 for a JS Date in milliseconds. |
| data.people[].educations[].fieldOfStudy | string | Field of study. |
| data.people[].educations[].grade | string | Grade as published on the profile. |
| data.people[].educations[].schoolId | any | The source's own record identifier for the school. Untyped passthrough: the source returns null on the profiles observed so far, so its populated shape is not yet proven and this field carries whatever the source sends without reshaping it. |
| data.people[].educations[].schoolImage | any | The school logo as the source returns it. Untyped passthrough: the source returns null on the profiles observed so far, so its populated shape is not yet proven and this field carries whatever the source sends without reshaping it. |
| data.people[].educations[].schoolName | string | School name. |
| data.people[].educations[].schoolUrl | string | Canonical school page URL. |
| data.people[].educations[].startUtc | integer | UTC epoch timestamp in seconds (Unix time). Multiply by 1000 for a JS Date in milliseconds. |
| data.people[].experience | object[] | Work history grouped by company, most recent first. |
| data.people[].experience[].companyEmployeeRangeMax | integer | Upper bound of this company's published employee range. |
| data.people[].experience[].companyEmployeeRangeMin | integer | Lower bound of this company's published employee range. |
| data.people[].experience[].companyId | string | The source's own record identifier for this company, exposed so you can trace a result back to the record it came from. |
| data.people[].experience[].companyImage | string | Company logo URL. This is a SIGNED, EXPIRING image-proxy URL - the path carries an exp: epoch roughly five days out - so fetch and store the image promptly rather than storing this URL. |
| data.people[].experience[].companyLinkedinUrl | string | Canonical LinkedIn URL for this company. |
| data.people[].experience[].companyName | string | Company name for this block of work history. |
| data.people[].experience[].endUtc | integer | UTC epoch timestamp in seconds (Unix time). Multiply by 1000 for a JS Date in milliseconds. |
| data.people[].experience[].positions | object[] | Individual roles held at this company. |
| data.people[].experience[].positions[].companyName | string | Company name as published on the role. |
| data.people[].experience[].positions[].description | string | Role description. |
| data.people[].experience[].positions[].employmentType | string | Employment type, for example Full-time. |
| data.people[].experience[].positions[].endUtc | integer | UTC epoch timestamp in seconds (Unix time). Multiply by 1000 for a JS Date in milliseconds. |
| data.people[].experience[].positions[].location | string | Role location. |
| data.people[].experience[].positions[].startUtc | integer | UTC epoch timestamp in seconds (Unix time). Multiply by 1000 for a JS Date in milliseconds. |
| data.people[].experience[].positions[].title | string | Role title. |
| data.people[].experience[].startUtc | integer | UTC epoch timestamp in seconds (Unix time). Multiply by 1000 for a JS Date in milliseconds. |
| data.people[].facebookUrl | string | Canonical Facebook profile URL. |
| data.people[].firstName | string | Person's first name. |
| data.people[].followable | any | Whether the profile can be followed without connecting. Untyped passthrough: the source returns null for most profiles, so its populated shape is not yet proven and this field carries whatever the source sends without reshaping it. |
| data.people[].followerCount | integer | LinkedIn follower count. |
| data.people[].fullName | string | Person's full name. |
| data.people[].functions | string[] | Job functions the current role covers. |
| data.people[].githubUrl | string | Canonical GitHub profile URL. |
| data.people[].headline | string | Professional profile headline. |
| data.people[].hiring | boolean | Whether the profile is flagged as hiring. |
| data.people[].image | string | Profile photo URL. This is a SIGNED, EXPIRING image-proxy URL - the path carries an exp: epoch roughly five days out - so fetch and store the image promptly rather than storing this URL. |
| data.people[].industry | string | Industry the person works in. |
| data.people[].influencer | boolean | Whether the profile carries a LinkedIn influencer badge. |
| data.people[].lastName | string | Person's last name. |
| data.people[].linkedinHandle | string | LinkedIn public profile handle, the trailing segment of the profile URL. |
| data.people[].linkedinUrl | string | Canonical LinkedIn profile URL. |
| data.people[].location | string | Formatted location. |
| data.people[].locationPosition | any | Coordinates for the person's location as the source returns them. Untyped passthrough: the source returns null for most profiles, so its populated shape is not yet proven and this field carries whatever the source sends without reshaping it. |
| data.people[].locationShort | string | Shorter form of the same location, usually city and state without country or continent. It duplicates part of location. |
| data.people[].middleName | string | Person's middle name. |
| data.people[].networkInfluencer | boolean | The same influencer flag as the badge above, carried on the source's network statistics instead of its badge block. Expected to agree with influencer; compare them if the distinction matters to you. |
| data.people[].openToWork | boolean | Whether the profile is flagged open to work. |
| data.people[].premium | boolean | Whether the profile carries a LinkedIn premium badge. |
| data.people[].previousJobTitles | any | Job titles the person held before the current one, as the source returns them. Untyped passthrough: the source returns null for most profiles, so its populated shape is not yet proven and this field carries whatever the source sends without reshaping it. The experience array carries the same history in a typed form. |
| data.people[].primaryLanguage | string | Primary profile language code. |
| data.people[].primaryLanguageCountry | string | Country code paired with the primary profile language, for example US. |
| data.people[].profileBackground | any | The profile background or cover image as the source returns it. Untyped passthrough: the source returns null for most profiles, so its populated shape is not yet proven and this field carries whatever the source sends without reshaping it. |
| data.people[].profileId | string | The source's own record identifier for this person, exposed so you can trace a result back to the record it came from. |
| data.people[].profileLanguages | any | Languages the person lists on the profile, as the source returns them. Untyped passthrough: the source returns null for most profiles, so its populated shape is not yet proven and this field carries whatever the source sends without reshaping it. |
| data.people[].seniority | string | Seniority level inferred for the current role. |
| data.people[].skills | string[] | Skills listed on the profile. |
| data.people[].state | string | Location state or region. |
| data.people[].subDepartments | string[] | Sub-departments the current role belongs to. |
| data.people[].summary | string | Profile summary or about section. |
| data.people[].supportedLocales | object[] | Every locale the profile is available in. The first entry usually repeats primaryLanguage and primaryLanguageCountry. |
| data.people[].supportedLocales[].country | string | Country code for this locale. |
| data.people[].supportedLocales[].language | string | Language code for this locale. |
| data.people[].title | string | Current job title. |
| data.people[].titleStartUtc | integer | UTC epoch timestamp in seconds (Unix time). Multiply by 1000 for a JS Date in milliseconds. |
| data.people[].twitterUrl | string | Canonical X (Twitter) profile URL. |
| data.people[].updatedUtc | integer | UTC epoch timestamp in seconds (Unix time). Multiply by 1000 for a JS Date in milliseconds. |
| data.people[].verified | boolean | Whether LinkedIn has verified the profile. |
| data.size | integer | Configured page size. |
| data.total | integer | Total matching people. |
| data.totalPages | integer | Total result pages. |
| found | boolean | Whether the search returned at least one person. |
| reason | "not_found" | Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost. |
| Price | ||
| Price per request (ceiling) | USD | $0.84 |
| Price /1k results | USD | $8.40 |
FAQ
About the People Search Ai ark API
The AnyAPI People Search Ai ark API returns People Search ai ark data as normalized JSON from one POST call to /v1/run/people_search.ai_ark. Search professional profiles with account, contact, and saved-list filters. AnyAPI returns one normalized schema whichever source serves it. It costs $8.40 per 1,000 results, and never more than $0.84 for a single request, in US dollars with no subscription and no monthly minimum.
It costs $8.40 per 1,000 results, and never more than $0.84 for a single request, in US dollars with no subscription and no monthly minimum. You fund one USD wallet, each call draws it down, and a failed request costs $0.
Search professional profiles with account, contact, and saved-list filters. The response is normalized JSON with the same envelope every AnyAPI endpoint returns, so parsing a second endpoint is a change of URL and nothing else.