Skip to content
Talk to an Engineer Dashboard

Apollo

Connect to Apollo.io to search and enrich B2B contacts and accounts, manage CRM contacts, and automate outreach sequences.

Connect to Apollo.io to search and enrich B2B contacts and accounts, manage CRM contacts, and automate outreach sequences.

Apollo logo

Supports authentication: OAuth 2.0

Register your Scalekit environment with the Apollo connector so Scalekit handles the authentication flow and token lifecycle for you. The connection name you create will be used to identify and invoke the connection programmatically.

  1. Create a connection in Scalekit

    • In Scalekit dashboard, go to Agent AuthCreate Connection. Find Apollo and click Create.

    • Click Use your own credentials and copy the Redirect URI. It looks like: https://<SCALEKIT_ENVIRONMENT_URL>/sso/v1/oauth/<CONNECTION_ID>/callback

      ScopeRequired for
      contact_readReading contact details
      contact_writeCreating contacts
      contact_updateUpdating contacts
      account_readReading account details
      account_writeCreating accounts
      organizations_enrichEnriching accounts with Apollo data
      person_readEnriching contacts (paid plans only)
      emailer_campaigns_searchListing email sequences
      accounts_searchSearching accounts (paid plans only)
      contacts_searchSearching contacts (paid plans only)

    Keep this tab open — you’ll return to it in step 3.

  2. Register an OAuth application in Apollo

    • Go to Apollo’s OAuth registration page and sign in with your Apollo account.

    • Fill in the registration form:

      • Application name — a name to identify your app (e.g., My Sales Agent)
      • Description — brief description of what your app does
      • Redirect URIs — paste the redirect URI you copied from Scalekit
    • Under Scopes, select the permissions your agent needs. Use the table below to decide:

      ScopeRequired for
      contact_readReading contact details
      contact_writeCreating contacts
      contact_updateUpdating contacts
      account_readReading account details
      account_writeCreating accounts
      organizations_enrichEnriching accounts with Apollo data
      person_readEnriching contacts (paid plans only)
      emailer_campaigns_searchListing email sequences
      accounts_searchSearching accounts (paid plans only)
      contacts_searchSearching contacts (paid plans only)

    • Click Register application.

  3. Copy your client credentials

    After registering, Apollo shows the Client ID and Client Secret for your application.

    Copy both values now. The Client Secret is shown only once — you cannot retrieve it again after navigating away.

  4. Add credentials in Scalekit

    • Return to Scalekit dashboardAgent AuthConnections and open the connection you created in step 1.

    • Enter the following:

      • Client ID — from Apollo
      • Client Secret — from Apollo
      • Permissions — the same scopes you selected in Apollo

      Add credentials in Scalekit dashboard

    • Click Save.

Connect a user’s Apollo account and make API calls on their behalf — Scalekit handles OAuth and token management automatically.

examples/apollo.ts
import { ScalekitClient } from '@scalekit-sdk/node';
import 'dotenv/config';
const connectionName = 'apollo'; // connection name from Scalekit dashboard
const identifier = 'user_123'; // your unique user identifier
// Get credentials from app.scalekit.com → Developers → API Credentials
const scalekit = new ScalekitClient(
process.env.SCALEKIT_ENV_URL,
process.env.SCALEKIT_CLIENT_ID,
process.env.SCALEKIT_CLIENT_SECRET
);
const actions = scalekit.actions;
async function main() {
try {
// Get authorization link and send it to your user
const { link } = await actions.getAuthorizationLink({
connectionName,
identifier,
});
console.log('Authorize Apollo:', link); // present this link to your user for authorization, or click it yourself for testing
process.stdout.write('Press Enter after authorizing...');
await new Promise(r => process.stdin.once('data', r));
// After the user authorizes, make API calls via Scalekit proxy
const result = await actions.request({
connectionName,
identifier,
path: '/api/v1/contacts/search',
method: 'POST',
});
console.log(result.data);
} catch (err) {
console.error('Apollo request failed:', err);
process.exit(1);
}
}
main().catch((err) => {
console.error('Unhandled error:', err);
process.exit(1);
});

Create a new account (company) record in your Apollo CRM. Accounts represent organizations and can be linked to contacts. Check for duplicates before creating to avoid double entries.

NameTypeRequiredDescription
domainstringNoWebsite domain of the company
linkedin_urlstringNoLinkedIn company page URL
namestringYesName of the company/account
phone_numberstringNoMain phone number of the company
raw_addressstringNoPhysical address of the company

Create a new contact record in your Apollo CRM. The contact will appear in your Apollo contacts list and can be enrolled in sequences. Check for duplicates before creating to avoid double entries.

NameTypeRequiredDescription
account_idstringNoApollo account ID to associate this contact with
emailstringNoEmail address of the contact
first_namestringYesFirst name of the contact
last_namestringYesLast name of the contact
linkedin_urlstringNoLinkedIn profile URL of the contact
organization_namestringNoCompany name the contact works at
phonestringNoPhone number of the contact
titlestringNoJob title of the contact

Enrich a company/account record with Apollo firmographic data using the company’s website domain or name. Returns verified employee count, revenue estimates, industry, tech stack, funding rounds, and social profiles. Consumes Apollo credits per match.

NameTypeRequiredDescription
domainstringNoWebsite domain of the company to enrich (e.g., acmecorp.com)
namestringNoCompany name to enrich (used if domain is not available)

Enrich a contact using Apollo’s people matching engine. Provide an email address or name + company to retrieve a verified contact profile. Revealing personal emails or phone numbers consumes additional Apollo credits per successful match.

NameTypeRequiredDescription
emailstringNoWork email address of the contact to enrich
first_namestringNoFirst name of the contact to enrich
last_namestringNoLast name of the contact to enrich
linkedin_urlstringNoLinkedIn profile URL for precise matching
organization_namestringNoCompany name to assist in matching
reveal_personal_emailsbooleanNoAttempt to reveal personal email addresses (consumes extra Apollo credits)
reveal_phone_numberbooleanNoAttempt to reveal direct phone numbers (consumes extra Apollo credits)

Retrieve the full profile of a company account from Apollo by its ID. Returns detailed firmographic data including employee count, revenue estimates, industry, tech stack, funding information, and social profiles.

NameTypeRequiredDescription
account_idstringYesThe Apollo account (organization) ID to retrieve

Retrieve the full profile of a contact from Apollo by their ID. Returns detailed professional information including email, phone, LinkedIn URL, employment history, education, and social profiles.

NameTypeRequiredDescription
contact_idstringYesThe Apollo contact ID to retrieve

List available email sequences (Apollo Sequences / Emailer Campaigns) in your Apollo account. Supports filtering by name and pagination. Returns sequence ID, name, status, and step count.

NameTypeRequiredDescription
pageintegerNoPage number for pagination (starts at 1)
per_pageintegerNoNumber of sequences to return per page (max 100)
searchstringNoFilter sequences by name (partial match)

Search Apollo’s company database using firmographic filters such as company name, industry, employee count range, revenue range, and location. Returns matching account records with company details.

NameTypeRequiredDescription
company_namestringNoFilter accounts by company name (partial match supported)
employee_rangesstringNoComma-separated employee count ranges (e.g., 1,10,11,50,51,200)
industrystringNoFilter accounts by industry vertical
keywordsstringNoKeyword search across company name, description, and domain
locationstringNoFilter accounts by headquarters city, state, or country
pageintegerNoPage number for pagination (starts at 1)
per_pageintegerNoNumber of accounts to return per page (max 100)

Search contacts in your Apollo CRM using filters such as job title, company, and sort order. Returns matching contact records with professional details. Results are paginated.

NameTypeRequiredDescription
company_namestringNoFilter contacts by company name
industrystringNoFilter contacts by their company’s industry (e.g., Software, Healthcare)
keywordsstringNoFull-text keyword search across contact name, title, company, and bio
locationstringNoFilter contacts by city, state, or country
pageintegerNoPage number for pagination (starts at 1)
per_pageintegerNoNumber of contacts to return per page (max 100)
senioritystringNoFilter by seniority level (e.g., c_suite, vp, director, manager, senior, entry)
titlestringNoFilter contacts by job title keywords (e.g., VP of Sales)

Update properties or CRM stage of an existing Apollo contact record by contact ID. Only the provided fields will be updated; omitted fields remain unchanged.

NameTypeRequiredDescription
contact_idstringYesThe Apollo contact ID to update
contact_stage_idstringNoApollo CRM stage ID to move the contact to
emailstringNoUpdated email address for the contact
first_namestringNoUpdated first name
last_namestringNoUpdated last name
linkedin_urlstringNoUpdated LinkedIn profile URL
organization_namestringNoUpdated company name
phonestringNoUpdated phone number
titlestringNoUpdated job title