Adapt Prospect API

REST API for searching Adapt's B2B contact and company database, enriching known contacts by email/LinkedIn/name+domain, and purchasing contacts to reveal verified email addresses and phone numbers. JSON over HTTPS with header-based authentication (email + apiKey). Default rate limit of 250 requests per minute per account; pagination via cursorMark; credit consumption surfaced through `x-call-credit-type` and `*-remaining-credits` response headers.

Adapt Prospect API is published by Adapt on the APIs.io network, described by a machine-readable OpenAPI specification.

This API exposes 4 machine-runnable capabilities that can be deployed as REST, MCP, or Agent Skill surfaces via Naftiko and 2 JSON Schema definitions.

Tagged areas include Contacts, Companies, Enrichment, Search, and B2B Data. The published artifact set on APIs.io includes API documentation, an OpenAPI specification, a JSON-LD context, 4 Naftiko capability specs, and 2 JSON Schemas.

Documentation

Specifications

Schemas & Data

Other Resources

OpenAPI Specification

adapt-prospect-api-openapi.yml Raw ↑
openapi: 3.0.3
info:
  title: Adapt Prospect API
  description: |
    Adapt's Prospect API provides programmatic access to a B2B contact and company
    intelligence database of 250M+ contacts and 12M+ companies. Search, enrich, and
    purchase verified B2B contact data with 50+ attributes including verified email
    addresses, direct dial phone numbers, job titles, levels, departments,
    technographics, firmographics, and location data.

    All endpoints are organized around REST. Requests and responses are JSON over
    HTTPS. Authentication is via two custom headers: `email` (account email) and
    `apiKey` (key from account settings). Default rate limit is 250 requests per
    minute per account.
  version: v3
  contact:
    name: Adapt Support
    url: https://www.adapt.io
  license:
    name: Adapt Terms of Service
    url: https://www.adapt.io/terms-of-service
servers:
  - url: https://api.adapt.io/v3
    description: Adapt API v3 production base URL
security:
  - emailAuth: []
    apiKeyAuth: []
tags:
  - name: Contact Search
    description: Search the contact database using contact and company filters.
  - name: Company Search
    description: Search the company database using firmographic filters.
  - name: Contact Enrichment
    description: Enrich a known contact with verified email and phone data.
  - name: Contact Purchase
    description: Purchase contacts returned from search to reveal email and phone.
paths:
  /contact/search:
    post:
      tags:
        - Contact Search
      summary: Search Contacts
      description: |
        Search Adapt's B2B contact database using a combination of contact and
        company filters. Returns contact metadata without email addresses; emails
        are revealed via the `/contact/fetch` purchase endpoint.
      operationId: searchContacts
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ContactSearchRequest'
      responses:
        '200':
          description: Search results
          headers:
            x-call-credit-type:
              schema:
                type: string
              description: Credit types consumed by this call.
            search-remaining-credits:
              schema:
                type: integer
              description: Search credits remaining for the account.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ContactSearchResponse'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '429':
          $ref: '#/components/responses/RateLimited'
        '500':
          $ref: '#/components/responses/ServerError'
  /company/search:
    post:
      tags:
        - Company Search
      summary: Search Companies
      description: |
        Search Adapt's company database by name, domain, industry, sub-industry,
        head count, revenue, and location. Returns company metadata including
        the number of contacts known per company.
      operationId: searchCompanies
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CompanySearchRequest'
      responses:
        '200':
          description: Search results
          headers:
            x-call-credit-type:
              schema:
                type: string
            search-remaining-credits:
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CompanySearchResponse'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '429':
          $ref: '#/components/responses/RateLimited'
        '500':
          $ref: '#/components/responses/ServerError'
  /contact/enrich:
    post:
      tags:
        - Contact Enrichment
      summary: Enrich Contact
      description: |
        Enrich a known contact by email address, LinkedIn URL, or by the
        combination of first name, last name, and company domain. The `include`
        parameter controls whether email, phone, or both are returned.
      operationId: enrichContact
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ContactEnrichRequest'
      responses:
        '200':
          description: Enriched contact
          headers:
            x-call-credit-type:
              schema:
                type: string
            enrich-remaining-credits:
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Contact'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '429':
          $ref: '#/components/responses/RateLimited'
        '500':
          $ref: '#/components/responses/ServerError'
  /contact/fetch:
    post:
      tags:
        - Contact Purchase
      summary: Purchase Contacts
      description: |
        Purchase up to 50 contacts returned from `/contact/search` to reveal
        verified email addresses and phone numbers. Consumes email and phone
        credits from the account's plan.
      operationId: purchaseContacts
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ContactFetchRequest'
      responses:
        '200':
          description: Purchased contacts with email and phone details
          headers:
            x-call-credit-type:
              schema:
                type: string
            email-remaining-credits:
              schema:
                type: integer
            phone-remaining-credits:
              schema:
                type: integer
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Contact'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '429':
          $ref: '#/components/responses/RateLimited'
        '500':
          $ref: '#/components/responses/ServerError'
components:
  securitySchemes:
    emailAuth:
      type: apiKey
      in: header
      name: email
      description: Account email used to register with Adapt.
    apiKeyAuth:
      type: apiKey
      in: header
      name: apiKey
      description: API key from the Adapt account settings page.
  schemas:
    ContactSearchRequest:
      type: object
      properties:
        name:
          type: array
          items:
            type: string
        firstName:
          type: array
          items:
            type: string
        lastName:
          type: array
          items:
            type: string
        title:
          type: array
          items:
            type: string
        excludeTitle:
          type: array
          items:
            type: string
        titleExactMatch:
          type: boolean
        department:
          type: array
          items:
            type: string
            enum:
              - Engineering
              - Finance
              - HR
              - IT
              - Marketing
              - Operations
              - Sales
              - Support
              - Other
        level:
          type: array
          items:
            type: string
            enum:
              - C-Level
              - VP-Level
              - Director-Level
              - Manager-Level
              - Staff
              - Other
        companyName:
          type: array
          items:
            type: string
        companyDomain:
          type: array
          items:
            type: string
        companyHeadCount:
          type: array
          items:
            type: string
        companyRevenue:
          type: array
          items:
            type: string
        companyIndustry:
          type: array
          items:
            type: string
        companySubIndustry:
          type: array
          items:
            type: string
        technology:
          type: array
          items:
            type: string
        locationPreference:
          type: string
          enum: [contact, company, '*', AND]
        city:
          type: array
          items:
            type: string
        state:
          type: array
          items:
            type: string
        country:
          type: array
          items:
            type: string
        dontDisplayOwnedContact:
          type: boolean
        minimumEmailDeliverabilityScore:
          type: integer
          enum: [75, 85, 95]
        required:
          type: array
          items:
            type: string
            enum: [EMAIL]
        limit:
          type: integer
        cursorMark:
          type: string
    ContactSearchResponse:
      type: object
      properties:
        contacts:
          type: array
          items:
            $ref: '#/components/schemas/Contact'
        cursorMark:
          type: string
        totalResults:
          type: integer
    CompanySearchRequest:
      type: object
      properties:
        name:
          type: array
          items:
            type: string
        domain:
          type: array
          items:
            type: string
        headCount:
          type: array
          items:
            type: string
        revenue:
          type: array
          items:
            type: string
        industry:
          type: array
          items:
            type: string
        subIndustry:
          type: array
          items:
            type: string
        city:
          type: array
          items:
            type: string
        state:
          type: array
          items:
            type: string
        country:
          type: array
          items:
            type: string
        limit:
          type: integer
        cursorMark:
          type: string
    CompanySearchResponse:
      type: object
      properties:
        companies:
          type: array
          items:
            $ref: '#/components/schemas/Company'
        cursorMark:
          type: string
        totalResults:
          type: integer
    ContactEnrichRequest:
      type: object
      properties:
        email:
          type: string
          format: email
        linkedinURL:
          type: string
          format: uri
        firstName:
          type: string
        lastName:
          type: string
        domain:
          type: string
        include:
          type: array
          items:
            type: string
            enum: [EMAIL, PHONE]
    ContactFetchRequest:
      type: object
      required: [contactIds]
      properties:
        contactIds:
          type: array
          maxItems: 50
          items:
            type: string
    Contact:
      type: object
      properties:
        id:
          type: string
        email:
          type: string
          format: email
        firstName:
          type: string
        lastName:
          type: string
        title:
          type: string
        department:
          type: string
        level:
          type: string
        city:
          type: string
        state:
          type: string
        country:
          type: string
        phoneNumber:
          type: array
          items:
            type: string
        emailDeliverabilityScore:
          type: integer
        linkedinURL:
          type: string
          format: uri
        company:
          $ref: '#/components/schemas/Company'
    Company:
      type: object
      properties:
        name:
          type: string
        website:
          type: string
          format: uri
        domain:
          type: string
        phoneNumber:
          type: string
        industry:
          type: string
        subIndustry:
          type: string
        headCount:
          type: string
        revenue:
          type: string
        city:
          type: string
        state:
          type: string
        country:
          type: string
        numberOfContacts:
          type: integer
    Error:
      type: object
      properties:
        code:
          type: string
          description: Adapt internal application code (e.g. APP-400-001).
        message:
          type: string
  responses:
    BadRequest:
      description: Invalid request payload (APP-400-001).
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    Unauthorized:
      description: Invalid credentials (APP-401-001).
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    Forbidden:
      description: |
        Subscription missing (APP-403-001), API access denied (APP-403-002),
        or insufficient credits (APP-403-003).
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    RateLimited:
      description: Rate limit exceeded (APP-429-001). 250 requests per minute.
      headers:
        x-ratelimit-limit:
          schema:
            type: integer
        x-ratelimit-reset:
          schema:
            type: integer
        x-ratelimit-retry-after:
          schema:
            type: integer
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    ServerError:
      description: Server error (APP-500-001).
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'