apollo.io APIwww.apollo.io ↗
Search Apollo.io's database for people by title, location, and seniority. Enrich profiles with emails, LinkedIn URLs, employment history, and company data.
curl -X GET 'https://api.parse.bot/scraper/44e172e6-9a69-4721-8555-7db5ee8c16f2/search_people?per_page=5&max_pages=1&person_titles=Software+Engineer&person_locations=San+Francisco%2C+California%2C+United+States' \ -H 'X-API-Key: $PARSE_API_KEY'
Search for people/leads with rich filtering options. Supports pagination to retrieve up to 50,000 results. Does not consume Apollo credits. Returns names (last name may be obfuscated on free tier), titles, companies, locations, and metadata.
| Param | Type | Description |
|---|---|---|
| page | integer | Starting page number (1-500) |
| api_keyrequired | string | Apollo.io API key. Get from Settings > Integrations > API Keys in your Apollo account. |
| per_page | integer | Results per page (1-100) |
| max_pages | integer | Maximum number of pages to fetch (each page = up to 100 results) |
| q_keywords | string | Keyword search string to filter results |
| person_titles | string | Comma-separated job titles to filter by (e.g., 'Software Engineer,Product Manager') |
| person_locations | string | Comma-separated locations to filter by (e.g., 'San Francisco, California, United States') |
| person_seniorities | string | Comma-separated seniority levels (e.g., 'senior,manager,director,vp,c_suite') |
| contact_email_status | string | Comma-separated email status filters (e.g., 'verified,likely to engage') |
| include_similar_titles | boolean | Include people with similar job titles |
| organization_num_employees | string | Comma-separated employee count ranges (e.g., '1,10,11,20,21,50') |
{
"type": "object",
"fields": {
"people": "array of person objects with id, name, title, company, location, linkedin_url, and other metadata",
"page_start": "integer - starting page number",
"pages_fetched": "integer - number of pages retrieved",
"results_count": "integer - number of people returned in this response",
"total_entries": "integer - total matching results available"
},
"sample": {
"data": {
"people": [
{
"id": "abc123",
"city": "New York",
"name": "John S.",
"state": "New York",
"title": "Real Estate Agent",
"company": "Keller Williams Realty",
"country": "United States",
"headline": "Licensed Real Estate Agent",
"last_name": "S.",
"photo_url": null,
"seniority": "senior",
"first_name": "John",
"github_url": null,
"departments": [
"real_estate"
],
"twitter_url": null,
"email_status": "verified",
"linkedin_url": "https://www.linkedin.com/in/example",
"organization_id": "org123",
"organization_size": 5000,
"organization_website": "https://www.kw.com",
"organization_industry": "real estate"
}
],
"page_start": 1,
"pages_fetched": 1,
"results_count": 5,
"total_entries": 15000
},
"status": "success"
}
}About the apollo.io API
The Apollo.io API exposes 2 endpoints that let you search millions of professional profiles and enrich individual records with structured contact data. search_people accepts filters for job title, location, seniority, and keywords, returning up to 50,000 paginated results per query. enrich_person resolves a partial identity — name, company domain, or Apollo ID — into a full profile including work email, employment history, and organization details.
search_people
The search_people endpoint accepts filters including person_titles (comma-separated job titles), person_locations (city, state, or country strings), person_seniorities (e.g. senior, director, c_suite), and a free-text q_keywords field. Pagination is controlled via page (1–500), per_page (1–100), and max_pages. Each response includes a people array alongside total_entries, results_count, and pages_fetched so you can track progress across large result sets. This endpoint does not consume Apollo credits regardless of result volume. Note that on Apollo's free tier, last_name values may be obfuscated in search results.
enrich_person
enrich_person takes at least one identifier — a person_id from a prior search, a linkedin_url, or a combination of first_name, last_name, and organization_name or domain — and returns a resolved profile. Response fields include email, title, company, city, state, country, and the Apollo id for downstream lookups. Setting reveal_phone_number to true will attempt to surface a direct phone number, but doing so consumes Apollo credits according to your plan tier.
Data Coverage and Limitations
Search results reflect Apollo's contact database, which skews toward English-speaking markets and professional roles documented on LinkedIn and company websites. Last names in search_people results may be masked on free-tier keys; full names require an Apollo account with sufficient access. The enrich_person endpoint returns email as a top-level string field — bulk email retrieval across large search sets would require iterating enrichment calls and managing credit consumption accordingly.
- Build a targeted outreach list by filtering
search_peopleonperson_titleslike 'VP of Engineering' andperson_locationslike 'New York' - Resolve a LinkedIn URL to a verified work email using
enrich_personwith thelinkedin_urlparameter - Qualify inbound signups by enriching their name and company domain to retrieve
title,seniority, andcompanyfields - Segment a contact database by seniority using the
person_senioritiesfilter to isolate C-suite or director-level contacts - Retrieve employment history and organization metadata for a known Apollo
person_idto keep CRM records current - Paginate through up to 50,000 keyword-matched profiles using
q_keywordsandmax_pagesfor market research datasets
| Tier | Price | Credits/month | Rate limit |
|---|---|---|---|
| Free | $0/mo | 100 | 5 req/min |
| Hobby | $30/mo | 1,000 | 20 req/min |
| Developer | $100/mo | 5,000 | 250 req/min |
One credit = one API call regardless of which marketplace API you call. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.
Does Apollo.io have an official developer API?+
What does `enrich_person` return compared to `search_people`?+
search_people returns summary-level fields: name, title, company, location, linkedin_url, and Apollo's internal id. enrich_person resolves those into a full record that adds email, split address fields (city, state, country), first_name, last_name, employment history, and optionally a phone number. You typically chain the two: search to get IDs or LinkedIn URLs, then enrich specific records.Why are last names sometimes missing or obfuscated in search results?+
last_name fields in search_people responses for accounts on its free tier. Full last names are returned when your Apollo API key is associated with a paid plan that includes full contact reveal. The enrich_person endpoint similarly returns complete name data only when your plan permits it.Does the API return company firmographic data like employee count or revenue?+
How does pagination work for large searches?+
search_people supports up to 500 pages with up to 100 results per page, for a maximum of 50,000 results per query. Use the page, per_page, and max_pages parameters together. The response always includes total_entries so you can calculate how many pages remain before issuing the next request.