Skip to content
Scalekit Docs
Talk to an Engineer Dashboard

Connect AI agents to Apollo

Scalekit connector
Open markdown

The Apollo connector lets your AI agent act in each user's Apollo account. Each user signs in to Apollo once, and Scalekit stores and refreshes their tokens, so your agent never handles credentials. It comes with 75 tools.

Tools
75
What they doRead · write · destructive
41 · 32 · 241 read32 write2 destructive
Users sign in with
OAuth app
Scalekit's or your own

What you can do

  • Find new prospects: search Apollo’s people and company databases by title, seniority, industry, headcount, and location
  • Enrich people and companies: fill in verified contact and company details from an email, name, or domain
  • Manage contacts and accounts: create, update, and search contacts and accounts, one at a time or in bulk
  • Run sequences: create and activate sequences and add contacts to them for outreach
  • Draft and send emails: create email drafts or replies and send them from connected mailboxes
  • Track deals and tasks: create and update deals and tasks, and complete or skip tasks

Setup

  1. Install the SDK

    Terminal window
    npm install @scalekit-sdk/node dotenv
  2. Set your credentials

    Add your Scalekit credentials to your .env file. Find values in app.scalekit.com > Developers > API Credentials.

    .env
    SCALEKIT_ENVIRONMENT_URL=<your-environment-url>
    SCALEKIT_CLIENT_ID=<your-client-id>
    SCALEKIT_CLIENT_SECRET=<your-client-secret>
  3. Create the Apollo connection

    In AgentKit > Connections, create an Apollo connection. The name you give it is the connection_name your code passes. See Configure connections.

    Scalekit credentials are available for Apollo, so you don't need to register an OAuth app. To show your own app on the consent screen, use your own credentials instead.

    Use your own OAuth app

    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 AgentKit > Connections > Create 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 dashboard → AgentKit > Connections 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.

  4. Authorize a user and make your first call

    quickstart.mts
    import { ScalekitClient } from '@scalekit-sdk/node'
    import 'dotenv/config'
    import { createInterface } from 'node:readline/promises'
    const scalekit = new ScalekitClient(
    process.env.SCALEKIT_ENVIRONMENT_URL,
    process.env.SCALEKIT_CLIENT_ID,
    process.env.SCALEKIT_CLIENT_SECRET,
    )
    const actions = scalekit.actions
    const connector = 'apollo'
    const identifier = 'user_123'
    // Generate an authorization link for the user
    const { link } = await actions.getAuthorizationLink({ connectionName: connector, identifier })
    console.log('Authorize Apollo:', link)
    const rl = createInterface({ input: process.stdin, output: process.stdout })
    await rl.question('Press Enter after authorizing...')
    rl.close()
    // Make your first call
    const result = await actions.executeTool({
    connector,
    identifier,
    toolName: 'apollo_get_current_user',
    toolInput: {},
    })
    console.log(result)
    Terminal window
    npx tsx quickstart.mts

    Each user signs in once. See Authorize a user for the full flow and statuses.

Tools

Pass the exact name to execute_tool
Try in PlaygroundRequest a tool
  • apollo_bulk_enrich_organizationsEnrich data for up to 10 companies in a single API call, matching each by domain, LinkedIn URL, name, and/or website.Read-only

    Bulk Organization Enrichment

    Enrich data for up to 10 companies in a single API call, matching each by domain, LinkedIn URL, name, and/or website. Returns industry, revenue, employee counts, funding, and corporate contact details. Consumes 1 Apollo credit per organization matched; 0 credits if no match is found. Rate limited to 20/min, 100/hour, 600/day.

    Inputs

    detailsarray
    Info for each company to enrich, one object per company (up to 10 companies per request)
    domainsarray
    Domains of the companies to enrich, matched by domain only
  • apollo_bulk_enrich_peopleEnrich data for up to 10 people in a single API call by matching on name, email, employer, LinkedIn URL, or Apollo person ID.Read-only

    Bulk People Enrichment

    Enrich data for up to 10 people in a single API call by matching on name, email, employer, LinkedIn URL, or Apollo person ID. Optionally reveal personal emails and phone numbers (phone reveal requires a webhook_url; results are delivered asynchronously). Consumes 1-9 Apollo credits per person depending on what is matched; 0 credits if no match is found.

    Inputs

    detailsarrayrequired
    Info for each person to enrich, one object per person (up to 10 people per request)
    reveal_personal_emailsboolean
    Attempt to reveal personal email addresses for all matched people
    reveal_phone_numberboolean
    Attempt to reveal phone numbers, including mobile, for all matched people
    run_waterfall_emailboolean
    Enable waterfall enrichment for email using connected third-party data sources
    run_waterfall_phoneboolean
    Enable waterfall enrichment for phone using connected third-party data sources
    webhook_urlstring
    HTTPS URL Apollo should deliver asynchronous phone or waterfall enrichment results to
  • apollo_enrich_accountEnrich a company/account record with Apollo firmographic data using the company's website domain or name.Read-only

    Enrich Account

    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.

    Inputs

    domainstring
    Website domain of the company to enrich (e.g., acmecorp.com)
    namestring
    Company name to enrich (used if domain is not available)
  • apollo_enrich_contactEnrich a contact using Apollo's people matching engine.Read-only

    Enrich Contact

    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.

    Inputs

    emailstring
    Work email address of the contact to enrich
    first_namestring
    First name of the contact to enrich
    last_namestring
    Last name of the contact to enrich
    linkedin_urlstring
    LinkedIn profile URL for precise matching
    organization_namestring
    Company name to assist in matching
    reveal_personal_emailsboolean
    Attempt to reveal personal email addresses (consumes extra Apollo credits)
    reveal_phone_numberboolean
    Attempt to reveal direct phone numbers (consumes extra Apollo credits)
  • apollo_get_accountRetrieve the full profile of a company account from Apollo by its ID.Read-only

    Get Account

    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.

    Inputs

    account_idstringrequired
    The Apollo account (organization) ID to retrieve
  • apollo_get_api_usageRetrieve your team's Apollo API usage and rate limits.Read-only

    Get API Usage Stats

    Retrieve your team's Apollo API usage and rate limits. Returns, per endpoint, the requests consumed and the per-minute, per-hour, and per-day rate limits allowed under your Apollo plan. Takes no parameters.

    Inputs

    This tool takes no inputs.

  • apollo_get_contactRetrieve the full profile of a contact from Apollo by their ID.Read-only

    Get Contact

    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.

    Inputs

    contact_idstringrequired
    The Apollo contact ID to retrieve
  • apollo_get_contact_sequence_activityRetrieve the most recent sequence enrollment activity for a single Apollo contact, such as enrolled, paused, resumed, failed, completed, removed, or replied events.Read-only

    Get Contact Sequence Activity

    Retrieve the most recent sequence enrollment activity for a single Apollo contact, such as enrolled, paused, resumed, failed, completed, removed, or replied events. Optionally scope results to one sequence. Returns only the most recent events up to per_page and does not paginate further back in history. Uses 0 Apollo credits.

    Inputs

    contact_idstringrequired
    The Apollo ID for the contact whose sequence activity you want to retrieve
    per_pageinteger
    Maximum number of most-recent events to return
    sequence_idstring
    Apollo ID for a single sequence to scope the activity to

Workflows

Proxy API call
const result = await actions.request({
connectionName: 'apollo',
identifier: 'user_123',
path: '/api/v1/contacts/search',
method: 'POST',
});
console.log(result.data);
Execute a tool
const result = await actions.executeTool({
connector: 'apollo',
identifier: 'user_123',
toolName: 'apollo_create_account',
toolInput: {},
});
console.log(result);