Skip to content
Talk to an Engineer Dashboard

Apollo

Connect to Apollo to search contacts, manage sequences, enrich leads, and accelerate sales pipeline

Connect to Apollo to search contacts, manage sequences, enrich leads, and accelerate sales pipeline

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 Auth → 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

    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 → Agent Auth → 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
    • Click Save.

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

import scalekit.client, os
from dotenv import load_dotenv
load_dotenv()
connection_name = "apollo" # connection name from Scalekit dashboard
identifier = "user_123" # your unique user identifier
# Get credentials from app.scalekit.com → Developers → API Credentials
scalekit_client = scalekit.client.ScalekitClient(
client_id=os.getenv("SCALEKIT_CLIENT_ID"),
client_secret=os.getenv("SCALEKIT_CLIENT_SECRET"),
env_url=os.getenv("SCALEKIT_ENV_URL"),
)
# Get authorization link and send it to your user
link_response = scalekit_client.actions.get_authorization_link(
connection_name=connection_name,
identifier=identifier
)
print("Authorize Apollo:", link_response.link)
# After the user authorizes, make API calls via Scalekit proxy
result = scalekit_client.actions.request(
connection_name=connection_name,
identifier=identifier,
path="/api/v1/contacts/search",
method="POST"
)
print(result)

Create a new account (organization) in Apollo. Requires the account_write scope.

NameTypeRequiredDescription
namestringYesName of the account to create
domainstringNoWebsite domain of the account (e.g., example.com)
linkedin_urlstringNoLinkedIn profile URL of the account
phone_numberstringNoPrimary phone number of the account
raw_addressstringNoPhysical address of the account

Create a new contact in Apollo. Requires the contact_write scope.

NameTypeRequiredDescription
first_namestringYesFirst name of the contact
last_namestringYesLast name of the contact
account_idstringNoID of the account to associate this contact with
emailstringNoEmail address of the contact
linkedin_urlstringNoLinkedIn profile URL of the contact
organization_namestringNoName of the contact’s organization
phonestringNoPhone number of the contact
titlestringNoJob title of the contact

Enrich an account’s profile with additional data from Apollo’s database using domain or name. Requires the organizations_enrich scope.

NameTypeRequiredDescription
domainstringNoDomain of the organization to enrich (e.g., example.com)
namestringNoName of the organization to enrich

Enrich a contact’s profile with additional data from Apollo’s database. Requires the person_read scope.

NameTypeRequiredDescription
emailstringNoEmail address of the person to enrich (recommended for best results)
first_namestringNoFirst name of the person
last_namestringNoLast name of the person
linkedin_urlstringNoLinkedIn profile URL of the person
organization_namestringNoOrganization name of the person
reveal_personal_emailsbooleanNoSet to true to include personal email addresses in the response
reveal_phone_numberbooleanNoSet to true to include phone numbers in the response

Retrieve details of a specific account by ID. Requires the account_read scope.

NameTypeRequiredDescription
account_idstringYesID of the account to retrieve

Retrieve details of a specific contact by ID. Requires the contact_read scope.

NameTypeRequiredDescription
contact_idstringYesID of the contact to retrieve

List sequences (email outreach campaigns) in Apollo. Requires the emailer_campaigns_search scope.

NameTypeRequiredDescription
pageintegerNoPage number for pagination
per_pageintegerNoNumber of results per page
searchstringNoSearch term to filter sequences by name

Search for accounts (organizations) using filters such as company name, industry, and location. Requires the accounts_search scope.

NameTypeRequiredDescription
company_namestringNoFilter by company name
employee_rangesstringNoFilter by employee count range (e.g., 1,10)
industrystringNoFilter by industry
keywordsstringNoFull-text keyword search
locationstringNoFilter by account location
pageintegerNoPage number for pagination
per_pageintegerNoNumber of results per page

Search for contacts using filters such as title, company, industry, and location. Requires the contacts_search scope.

NameTypeRequiredDescription
company_namestringNoFilter by company name
industrystringNoFilter by industry
keywordsstringNoFull-text keyword search
locationstringNoFilter by contact location
pageintegerNoPage number for pagination
per_pageintegerNoNumber of results per page
senioritystringNoFilter by seniority level
titlestringNoFilter by job title

Update an existing contact by ID. Requires the contact_update scope.

NameTypeRequiredDescription
contact_idstringYesID of the contact to update
contact_stage_idstringNoUpdated contact stage ID
emailstringNoUpdated email address
first_namestringNoUpdated first name
last_namestringNoUpdated last name
linkedin_urlstringNoUpdated LinkedIn profile URL
organization_namestringNoUpdated organization name
phonestringNoUpdated phone number
titlestringNoUpdated job title