Skip to main content

Apollo

Apollo is a B2B go-to-market sales intelligence and engagement platform backed by a database of more than 230 million contacts and 30 million companies. The Apollo REST API exposes endpoints for people search, organization search, people and organization enrichment, contact and account management, and engagement workflows — enabling teams to programmatically prospect, enrich CRM records, and pipe high-quality firmographic and contact data into downstream warehouses, CRMs, and outbound systems.

Apollo icon

Power end-to-end data operations for your Apollo API with Nexla. Our bi-directional Apollo connector is purpose-built for Apollo, making it simple to ingest data, sync it across systems, and deliver it anywhere — all with no coding required. Nexla turns API-sourced data into ready-to-use, reusable data products and makes it easy to send data to Apollo or any other destination. With comprehensive monitoring, lineage tracking, and access controls, Nexla keeps your Apollo workflows fast, secure, and fully governed.

Features

Type: API

SourceDestination

  • Seamless API Integration: Connect to any endpoint as source or destination without coding, with automatic data product creation
  • Visual Composition & Chaining: Build complex integrations using visual templates, chain API calls, and compose workflows with data validation and filtering
  • API Proxy: Expose curated slices of your data securely with a secure and customizable API proxy that validates and transforms data on the fly
  • Request optimization with intelligent batching, retry, and caching to minimize API calls and costs

Prerequisites

The Apollo REST API uses API key authentication. The same key is used for every endpoint, but the key's scope is determined by the endpoint access selections made when the key is created. Review the prerequisites below before creating a credential in Nexla.

API Key Access Requirements

Generating an API key in Apollo requires admin privileges or a custom permission profile that includes API key management. Account owners can grant API key permissions from Settings > User Management if a non-admin user needs to manage keys directly.

Generate an Apollo API Key

  1. Sign in to Apollo at app.apollo.io using an account that has admin or API management privileges.

  2. From the left navigation, click Settings, then select Integrations.

  3. Locate the Apollo API tile in the integrations directory, and click Connect.

  4. On the Apollo API page, click the API Keys tab, then click Create new key.

  5. Configure the new API key:

    • Name: Enter a descriptive name (for example, Nexla Integration) so the key can be identified later in the API key list and audit logs.

    • Description: Enter an optional description noting where the key is used and which environment it belongs to.

    • Endpoint access: Toggle on each Apollo API endpoint that the key should be allowed to call. Alternatively, enable Set as master key to grant access to every public Apollo endpoint. For Nexla integrations, the endpoints used by this connector are the People Search, Organization Search, People Enrichment, Bulk People Enrichment, and Organization Enrichment endpoints — enable any combination required by your planned data flows.

      Only enable the endpoints that are actually needed. Following the principle of least privilege limits the impact if the key is ever compromised. The endpoint access set can be edited at any time from the API Keys tab.

  6. Click Create key. Apollo displays the generated API key value once. Copy it immediately and store it in a secure secret manager — the full key value cannot be retrieved later.

  7. (Optional) Test the API key by calling the Apollo health endpoint:

    • Send a GET request to https://api.apollo.io/v1/auth/health with the header X-Api-Key: <your_api_key>. A 200 response with {"status":"ok"} confirms the key is valid.

For complete information about creating API keys, see the Apollo Create API Keys guide. For details on authentication header formats, see the Apollo Authentication reference.

Rate Limits and Credits

Apollo enforces per-minute, per-hour, and per-day rate limits on every endpoint, and the limits scale with your Apollo plan. People Search calls do not consume credits, but Organization Search and the enrichment endpoints draw from the credit pool tied to your plan. Current usage and plan limits can be inspected at any time by calling the View API Usage Stats and Rate Limits endpoint.

Important

The Apollo API key grants access to your contact database, organization records, and any enrichment credits attached to the account. Store the key in a secure secret manager, never commit it to source control, and rotate it immediately if you suspect it has been exposed.

Authenticate

Create a credential in Nexla

  1. After selecting the data source/destination type, click the Add Credential tile to open the Add New Credential overlay.

  2. Enter a name for the credential in the Credential Name field and a short, meaningful description in the Credential Description field.

  3. Enter the Apollo API key value generated in Prerequisites in the API Key field. Nexla stores this value as an encrypted secret and sends it to Apollo in the X-Api-Key header on every API call.

    The same API key is used for every endpoint, including both source ingestion (People Search, Organization Search) and destination calls (People Enrichment, Bulk People Enrichment, Organization Enrichment). Confirm that the endpoint access list on the key includes every Apollo endpoint that your Nexla flows will use.

  4. Click the Save button at the bottom of the overlay. The newly added credential will now appear in a tile on the Authenticate screen during data source/destination creation and can be selected for use with a new data source or destination.

Use as a data source

To create a new data flow, navigate to the Integrate section, and click the New Data Flow button. Select the Apollo connector tile, then select the credential that will be used to connect to the Apollo instance, and click Next; or, create a new Apollo credential for use in this flow.

Endpoint templates

Nexla provides pre-built templates that can be used to rapidly configure data sources to ingest data from common Apollo endpoints. Select the endpoint from which this source will fetch data from the Endpoint pulldown menu. Available endpoint templates are listed in the expandable boxes below; click on an endpoint to see more information about it and how to configure your data source for this endpoint.

Search People

This endpoint calls Apollo's POST /api/v1/mixed_people/search endpoint to find net-new people in the Apollo database using demographic and firmographic filters. Use it to build prospect lists for outbound campaigns, sync ICP-matching contacts into a warehouse or CRM, or feed downstream enrichment flows.

  • Enter an array of job titles to match against in the Job Titles field — for example, ["CEO","CTO","VP Engineering"]. Leave the default [] to skip title filtering. Apollo matches titles loosely by default.
  • Enter an array of location names in the Locations field — for example, ["San Francisco","New York","United Kingdom"]. Locations may be cities, states, or countries.
  • Enter an array of seniority levels in the Seniority Levels field. Apollo's supported values include owner, founder, c_suite, partner, vp, head, director, manager, senior, entry, and intern.
  • Enter an array of Apollo organization IDs in the Organization IDs field to restrict results to people at specific companies. Organization IDs can be obtained from the Search Organizations endpoint.
  • Enter the number of records to return per request in the Results Per Page field. Apollo caps this at 100; the default is 100.
  • Enter the page number from which to begin pagination in the Page Number field. The default is 1. Nexla automatically increments the page on each iteration until all available results have been retrieved.

Apollo's People Search endpoint does not consume Apollo credits and does not return email addresses or phone numbers. To resolve verified contact details, send the returned records through a downstream destination flow that calls the Enrich Person or Enrich People in Bulk endpoints. Apollo limits this endpoint to a maximum display of 50,000 records (100 per page × 500 pages). For full reference, see the Apollo People Search documentation.

Search People with Verified Email

This endpoint searches Apollo's people database and pre-filters the results to records where Apollo has marked the email status as verified. Use it when downstream outreach systems require deliverable email addresses and you want to avoid additional enrichment overhead.

  • Enter an array of job titles in the Job Titles field (for example, ["Sales Manager","Account Executive"]), or leave the default [] to skip title filtering.
  • Enter an array of location names in the Locations field to restrict results geographically.
  • Enter the number of records per page in the Results Per Page field (max 100).
  • Enter the starting page in the Page Number field. Nexla automatically increments through subsequent pages.

This template automatically includes contact_email_status: ["verified"] in the request body. Although the search endpoint itself does not consume credits, surfacing the underlying email value still requires a downstream call to Enrich Person or Enrich People in Bulk.

Search People with Unavailable Email

This endpoint searches Apollo's people database and pre-filters the results to records where Apollo has marked the email status as unavailable — meaning Apollo could not source or guess an email for the person. Use it to identify prospects who match your ICP but require an alternative outreach channel (phone, LinkedIn, etc.).

  • Enter an array of job titles in the Job Titles field.
  • Enter an array of location names in the Locations field.
  • Enter the number of records per page in the Results Per Page field (max 100).
  • Enter the starting page in the Page Number field.

This template automatically includes contact_email_status: ["unavailable"] in the request body. Combine this source with the Get Phone Number destination to unlock phone numbers for high-priority prospects.

Search People with Unverified Email

This endpoint searches Apollo's people database and pre-filters the results to records where Apollo has guessed an email (status guessed). Use it when expanding reach beyond strictly verified emails and accepting a higher bounce rate is acceptable.

  • Enter an array of job titles in the Job Titles field.
  • Enter an array of location names in the Locations field.
  • Enter the number of records per page in the Results Per Page field (max 100).
  • Enter the starting page in the Page Number field.

This template automatically includes contact_email_status: ["guessed"] in the request body. Validate guessed emails with an email verification service before high-volume outreach to protect domain deliverability.

Search People by Title and City

This endpoint is a focused variant of People Search that filters by job title and city-level location only. Use it to build geographically scoped prospect lists — for example, "marketing directors in Chicago" — without specifying additional firmographic filters.

  • Enter an array of job titles in the Job Titles field — for example, ["Marketing Director","Head of Marketing"].
  • Enter an array of city names in the Locations field. Apollo accepts city names directly (for example, ["Chicago","Austin"]); state and country can also be included to disambiguate (for example, ["Chicago, Illinois, United States"]).
  • Enter the number of records per page in the Results Per Page field (max 100).
  • Enter the starting page in the Page Number field.

Search People by Organization

This endpoint searches Apollo's people database within one or more specific organizations. Use it to extract org charts, build account-based marketing lists for target companies, or refresh contact rosters at known accounts.

  • Enter an array of Apollo organization IDs in the Organization IDs field. Apollo organization IDs are 24-character hexadecimal strings (for example, ["5e66b6381e05b80001b703f3"]) and can be obtained from the Search Organizations endpoint or from the URL of an organization's profile in the Apollo UI.
  • Enter an array of job titles in the Job Titles field to scope the search to specific roles within the target organizations.
  • Enter the number of records per page in the Results Per Page field (max 100).
  • Enter the starting page in the Page Number field.

To resolve company names to Apollo organization IDs, chain this template after a Search Organizations source by passing the returned organization IDs into a lookup-based macro.

Get Phone Number

This endpoint calls Apollo's POST /api/v1/people/match endpoint with phone reveal flags enabled to return the mobile or direct-dial phone number for a single person. Use it for high-priority enrichment of inbound leads or strategic account contacts when phone outreach is required.

  • Enter the person's email address in the Email Address field. Either an email or a LinkedIn URL is required to match a person in Apollo's database.
  • Enter the person's LinkedIn profile URL in the LinkedIn URL field (for example, https://www.linkedin.com/in/example/).
  • Set the Reveal Phone Number field to true to request the phone number. The default is true. Setting this to false returns the matched person record without phone details.
  • Set the Reveal Personal Emails field to true to also reveal personal email addresses on the matched record. The default is false.

Revealing phone numbers consumes Apollo mobile credits, which are billed separately from standard email enrichment credits and are not available on every Apollo plan. For full credit and plan details, see the Apollo API Pricing documentation.

Search Organizations

This endpoint calls Apollo's POST /api/v1/mixed_companies/search endpoint to find companies in the Apollo database using firmographic filters. Use it to build target account lists for ABM, segment companies by geography or size for outbound campaigns, or feed CRM account enrichment flows.

  • Enter an array of location names in the Organization Locations field — for example, ["United States","Germany","London"]. Locations may be cities, states, or countries.
  • Enter an array of employee count ranges in the Employee Count Ranges field. Each range is a comma-separated string of the minimum and maximum employee counts — for example, ["1,10","11,50","51,200"]. Apollo's standard ranges are 1,10, 11,20, 21,50, 51,100, 101,200, 201,500, 501,1000, 1001,2000, 2001,5000, 5001,10000, and 10001+.
  • Enter a company name keyword in the Organization Name field to search for organizations by name. Apollo performs a fuzzy match against the company name field.
  • Enter the number of records per page in the Results Per Page field (max 100).
  • Enter the starting page in the Page Number field.

Organization Search consumes Apollo credits according to your account's pricing plan. The endpoint is capped at 50,000 records (100 per page × 500 pages) — narrow the filters to stay within this window. For full reference, see the Apollo Organization Search documentation.

Search People (Advanced)

This endpoint exposes the full set of People Search filters available on paid Apollo plans, including similar-title expansion and explicit email-status filtering. Use it to construct precise ICP queries that combine title, seniority, location, and email-status criteria in a single call.

  • Enter an array of job titles in the Job Titles field (for example, ["HR","Software Engineer","Talent Acquisition"]).
  • Set the Include Similar Titles field to true to expand each title with Apollo's similar-title matching (for example, "Software Engineer" expanded to include "Backend Engineer", "Full Stack Developer", etc.). The default is false.
  • Enter an array of location names in the Locations field.
  • Enter an array of seniority levels in the Seniority Levels field. Apollo's supported values include owner, founder, c_suite, partner, vp, head, director, manager, senior, entry, and intern.
  • Enter an array of email statuses in the Email Status field. Supported values are verified, guessed, and unavailable. The default is ["verified"].
  • Enter the number of records per page in the Results Per Page field (max 100).
  • Enter the starting page in the Page Number field.

Some of these advanced filters — particularly similar-title expansion — are only available on paid Apollo plans. If the call fails with a permissions error, confirm the API key's endpoint access and the underlying Apollo subscription tier.

Once the selected endpoint template has been configured, click the Test button to the right of the endpoint selection menu to retrieve a sample of the data that will be fetched. Sample data will be displayed in the Endpoint Test Result panel on the right, allowing you to verify that the source is configured correctly before saving.

Manual configuration

Apollo data sources can also be manually configured to ingest data from any valid Apollo API endpoint — including endpoints not covered by the pre-built templates, such as the Contacts, Accounts, Sequences, and Email Activity endpoints — or when a custom request body, header, or pagination strategy is needed. Select the Advanced tab at the top of the configuration screen, and follow the instructions in Connect to Any API to configure the API method, endpoint URL, date/time and lookup macros, path to data, metadata, and request headers.

The Apollo API base URL is https://api.apollo.io/api/v1/, and all endpoint paths are appended after it — for example, the endpoint URL for People Search is https://api.apollo.io/api/v1/mixed_people/search. All of Apollo's search endpoints (/mixed_people/search, /mixed_companies/search) and enrichment endpoints (/people/match, /organizations/enrich) use the POST method, with the filter criteria sent in the JSON request body; retrieval endpoints such as /users/{id} and /auth/health use GET. Apollo also exposes a legacy https://api.apollo.io/v1/ base path for a small number of endpoints (such as the auth/health test endpoint) — confirm the correct base path for each endpoint by checking the Apollo API reference.

Apollo responses typically wrap the relevant records in a top-level key alongside pagination metadata: enter $.people[*] as the path to data for People Search responses, $.organizations[*] for Organization Search responses, or $.person for Person Enrichment/Match responses. Response-level fields outside the main data array — including pagination (page, per_page, total_entries, total_pages) and breadcrumbs — can be attached as common metadata to every record by entering a path such as $.pagination in the Path to Metadata in Response field.

Apollo's search endpoints use incrementing page-based pagination: set the pagination parameter to page and the per-page parameter to per_page, start the first request at page 1, and use a page size of 100 (Apollo's maximum). Apollo limits search results to 50,000 records (100 per page × 500 pages) regardless of how many records match the filter — narrow the filter criteria when expecting more results than this cap allows. Date/time macros in the API URL are useful for incremental ingestion against endpoints that accept created_at or updated_at ranges (such as the Contacts and Accounts endpoints), and lookup-based macros are useful for iterating a single endpoint over a list of values — for example, calling /people/match once per email address from an upstream Nexset of leads.

The most common manual request headers for Apollo are Content-Type:application/json and Cache-Control:no-cache. You do not need to include the X-Api-Key header — Nexla attaches the API key from the credential automatically.

Once all of the relevant settings have been configured, click the Create button in the upper right corner of the screen to save and create the new Apollo data source. Nexla will now begin ingesting data from the configured endpoint and will organize any data that it finds into one or more Nexsets.

Use as a destination

Click the + icon on the Nexset that will be sent to the Apollo destination, and select the Send to Destination option from the menu. Select the Apollo connector from the list of available destination connectors, then select the credential that will be used to connect to the Apollo account, and click Next; or, create a new Apollo credential for use in this flow.

Endpoint templates

Nexla provides pre-built templates that can be used to rapidly configure destinations to send data to common Apollo endpoints. Select the endpoint to which data will be sent from the Endpoint pulldown menu. Then, click on the template in the list below to expand it, and follow the instructions to configure additional endpoint settings.

Enrich Person

This endpoint calls Apollo's POST /api/v1/people/match endpoint to enrich a single person's profile with Apollo's contact, employment, and firmographic data. Use it to enrich inbound leads, MQLs, or contact records using a known identifier such as email, LinkedIn URL, or first/last name + company.

  • Each upstream record must include at least one identifier that Apollo can match against — typically an email, a linkedin_url, or a combination of first_name, last_name, and one of organization_name, domain, or id.
  • The full upstream record is sent as the JSON body of the POST /people/match request. Use the Nexla transform layer to shape upstream attributes into the field names that Apollo's match endpoint expects.
  • Optional reveal flags (reveal_personal_emails, reveal_phone_number) can be included in the record body to request work or personal email and phone enrichment. Each reveal consumes additional Apollo credits.

Person enrichment consumes Apollo credits according to your account's pricing plan. The credit cost depends on which reveal flags are enabled and which data sources successfully return enrichment. For full details, see the Apollo People Enrichment documentation.

Enrich People in Bulk

This endpoint calls Apollo's POST /api/v1/people/bulk_match endpoint to enrich up to 10 people per request in a single call. Use it for large-scale enrichment workloads — for example, refreshing a contact warehouse or hydrating a backlog of leads — where the throughput improvement over the single-person endpoint significantly reduces wall-clock time.

  • Configure the upstream flow to deliver an array of person records under the details key — each entry follows the same shape as the single-person Enrich Person request body.
  • Enable record batching in the destination configuration (see Manual configuration below) with a batch size of up to 10, and select the JSON property grouping algorithm to wrap batches under the details property in the outgoing request body.
  • Optional top-level reveal flags (reveal_personal_emails, reveal_phone_number) apply to every record in the batch.

Apollo caps the bulk endpoint at 10 records per request and applies stricter rate limits (50% of the per-minute limit of the single-person endpoint). For full reference, see the Apollo Bulk People Enrichment documentation.

Enrich Person by Domain

This endpoint calls Apollo's POST /api/v1/people/match endpoint configured for domain-based matching. Use it when only a company email domain and basic person identifiers (name) are available — for example, when enriching webform submissions that include a work email but no LinkedIn URL.

  • Each upstream record must include a domain field (the company's email domain, for example example.com) together with first_name and last_name.
  • The full upstream record is sent as the JSON body of the POST /people/match request — Apollo's match logic uses the supplied domain to narrow the candidate set before scoring the name match.

Domain-based matching produces the highest confidence results when the supplied domain is the company's primary corporate domain (not a free-email domain such as gmail.com). For mismatched or generic domains, expect lower match rates.

Enrich Organization

This endpoint calls Apollo's POST /api/v1/organizations/enrich endpoint to enrich a company record with Apollo's firmographic, technographic, and funding data. Use it to fill in company size, industry, location, technology stack, and revenue fields for inbound accounts, target lists, or existing CRM records.

  • Each upstream record must include a domain field (for example, apollo.io) or an Apollo organization id. The domain is the most common matching key and is generally easier to source from CRM data.
  • The full upstream record is sent as the JSON body of the POST /organizations/enrich request.

Organization enrichment consumes Apollo credits. For full reference on returned fields (including industry, technologies, funding rounds, and revenue estimates), see the Apollo Organization Enrichment documentation.

Manual configuration

Apollo destinations can also be manually configured to send data to any valid Apollo API endpoint. Select the Advanced tab at the top of the configuration screen, and follow the instructions in Connect to Any API to configure the API method, data format, endpoint URL, request headers, attribute exclusions, record batching, and response webhooks.

Apollo's API accepts and returns JSON exclusively — select JSON as the content format so Nexla automatically serializes each Nexset record to the JSON body expected by Apollo. Apollo's enrichment endpoints (/people/match, /people/bulk_match, /organizations/enrich) and most create endpoints use the POST method; update endpoints (for example, /contacts/{id}) use PUT; and destructive endpoints such as removing a contact from a sequence use DELETE. For update/upsert operations, include the ID of the object to be updated at the end of the URL — Nexla can substitute the ID directly from an upstream record using a lookup-based macro.

Record batching is required when targeting Apollo's bulk endpoints: for POST /people/bulk_match, set the batch size to 10 (Apollo rejects bulk requests containing more than 10 records), and select the JSON property grouping algorithm with the property name details, which produces a request body of the form {"details": [ ... ]} as required by the bulk match endpoint.

Common request headers for Apollo include Content-Type:application/json and Cache-Control:no-cache; you do not need to include the X-Api-Key header — Nexla attaches the API key from the credential automatically. The response webhook option is useful for capturing each enrichment response (including matched person/organization details) into a downstream warehouse or follow-up flow.

Save & activate

Once all endpoint settings have been configured, click the Done button in the upper right corner of the screen to save and create the destination. To send the data to the configured Apollo endpoint, open the destination resource menu, and select Activate.

The Nexset data will not be sent to Apollo until the destination is activated. Destinations can be activated immediately or at a later time, providing full control over data movement.