Argorant Enrich API

Fill in one record you already have: an email, a name at a company, or a company domain.

Operations 1

POST /api/v1/enrich Enrich an email, a name or a domain #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/argorant-com:argorant-com-enrich-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Calls without X-API-Key need no key. Calls with it need a paid plan — get a key.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

argorant-com-enrich-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Argorant Enrich API
  version: 1.0.0
  summary: 'Argorant is a complete B2B outreach platform that a script or an AI agent can run from start to finish: find the right people, get their checked work emails and phone numbers, find one email from a name and a company domain, check your own lists, run campaigns with a personal line for each contact, answer replies in the same thread, and order new sending mailboxes on new domains.'
  description: 'Argorant is a complete B2B outreach platform that a script or an AI agent can run from start to finish. Find the companies and people that fit your offer among 630.7M+ contacts in 202 countries. Get their work emails, checked right before you receive them, and their phone numbers. Find one person''s email from a name and a company domain. Check the emails on your own lists. Write a campaign with a personal line for every contact, send it from your own Google Workspace or Microsoft 365 mailboxes or from new mailboxes we set up on new domains for you, and answer the replies in the same thread.


    The REST API, the command line tool (`npx argorant`) and the MCP server for AI agents (`https://mcp.argorant.com/mcp`) share one account, one credit balance and the same rules, so anything you do here works the same in a script, a pipeline or a chat with Claude, ChatGPT or Codex.


    **The cheapest way to get validated contacts.** Argorant is the cheapest way to get validated B2B contacts. With pay as you go, 100,000 credits cost $499, which is under half a cent per validated contact. On Hyperscale, 200,000 credits a month cost $649, about a third of a cent each. An email that fails the check costs nothing. Compare the prices on our comparison pages, for example against ZoomInfo, Cognism, Hunter and LeadIQ.


    **What it costs.** Searching, counting and previewing are free. One credit buys one validated contact; an email that does not pass the check is left out and costs nothing. Checking an email from your own list costs half a credit. A phone number costs 10 credits and only when one is returned. Finding one email costs 1 credit when found and 0.25 when nothing is found. Campaign emails come with your plan and never use credits. Pay as you go from $17.50 for 500 credits to $499 for 100,000, or pick a plan from $99 a month.


    **How to start.** Create an API key at app.argorant.com/profile and send it as `Authorization: Bearer `. Call `GET /api/v1/account` to see your plan, credits and limits. Every answer carries an `X-Request-Id`; every error has the same shape with a stable `error.code`.


    **Limits.** Each key may send a set number of requests a minute: Starter $99 a month (5,000 credits, 100,000 campaign emails, 60 requests a minute); Pro $249 a month (25,000 credits, 300,000 campaign emails, 240 requests a minute); Scale $449 a month (100,000 credits, 600,000 campaign emails, 600 requests a minute); Hyperscale $649 a month (200,000 credits, 1,000,000 campaign emails, 1200 requests a minute). The 7-day trial and pay-as-you-go accounts get 30 a minute (60 through an AI assistant). On a plan there are no daily limits apart from the email finder. During the trial the account has daily limits that reset at midnight UTC: 500 counts and 500 preview rows (1000 and 1000 through an AI assistant), and each key 100 revealed people and 50,000 export rows. For bigger numbers use saved lists, exports and campaigns. Pay-as-you-go packs: 500 credits for $17.50, 5,000 credits for $69, 25,000 credits for $199, 100,000 credits for $499, valid 365 days.


    **Errors.** Every error has the same shape: `{"error": {"code", "message", "details"}, "request_id", "detail"}`. The code is stable; the message is a plain sentence. Every answer carries `X-Request-Id`, and answers to key calls carry `X-RateLimit-Limit`, `X-RateLimit-Remaining` and `X-RateLimit-Reset`.


    **Retries and pages.** Send an `Idempotency-Key` header on any write and a retry within 24 hours returns the first answer instead of doing the work twice. Lists take `limit` and `cursor` (or `offset`) and answer with `total`, `next_cursor` and `has_more`.'
  contact:
    name: Argorant support
    url: https://help.argorant.com
  termsOfService: https://argorant.com/terms
servers:
- url: https://app.argorant.com
  description: Production
security:
- BearerAuth: []
tags:
- name: Enrich
  description: 'Fill in one record you already have: an email, a name at a company, or a company domain.'
paths:
  /api/v1/enrich:
    post:
      tags:
      - Enrich
      operationId: enrich
      summary: Enrich an email, a name or a domain
      description: 'Three ways in. Send `email` to get the person behind it. Send `name` and `domain` to find that person at the company and get their checked work email. Send `domain` alone to get the company profile. The person ways cost 1 credit for a match whose email passes the check; the same person again is free, and a miss costs nothing. The company way is free.


        The company way needs only the argorant:read_counts scope.


        | Cost | What it does | Key scopes |

        | --- | --- | --- |

        | 1 credit per person found whose email passes the check; the same person again, misses and companies are free | Spends credits | `argorant:unlock_contacts` |'
      parameters:
      - $ref: '#/components/parameters/IdempotencyKey'
      - $ref: '#/components/parameters/RequestId'
      responses:
        '200':
          description: Person found or Company or No match
          headers:
            X-Request-Id:
              $ref: '#/components/headers/X-Request-Id'
            X-RateLimit-Limit:
              $ref: '#/components/headers/X-RateLimit-Limit'
            X-RateLimit-Remaining:
              $ref: '#/components/headers/X-RateLimit-Remaining'
            X-RateLimit-Reset:
              $ref: '#/components/headers/X-RateLimit-Reset'
          content:
            application/json:
              schema:
                type: object
                properties:
                  found:
                    type: boolean
                  type:
                    type: string
                  person_id:
                    type: string
                  person:
                    type: object
                    properties:
                      record_id:
                        type: string
                      first_name:
                        type: string
                      last_name:
                        type: string
                      full_name:
                        type: string
                      title:
                        type: string
                      seniority:
                        type: string
                      departments:
                        type: array
                        items:
                          type: string
                      company:
                        type: string
                      company_normalized:
                        type: string
                      company_domain:
                        type: string
                      email:
                        type: string
                      email_status:
                        type: string
                      linkedin_url:
                        type: string
                      city:
                        type: string
                      state:
                        type:
                        - string
                        - 'null'
                      country:
                        type: string
                      industry:
                        type: string
                      industries:
                        type: array
                        items:
                          type: string
                  charged:
                    type: integer
                  already_revealed:
                    type: boolean
                  deliverable:
                    type: boolean
                  verification:
                    type: string
              examples:
                example1:
                  summary: Person found
                  value:
                    found: true
                    type: person
                    person_id: p_8d4ba3d46cc885007c38e437
                    person:
                      record_id: p_8d4ba3d46cc885007c38e437
                      first_name: Alex
                      last_name: Schneider
                      full_name: Alex Schneider
                      title: VP of Sales
                      seniority: VP
                      departments:
                      - Sales
                      company: Evenito AG
                      company_normalized: Evenito
                      company_domain: evenito.com
                      email: alex@evenito.com
                      email_status: valid
                      linkedin_url: https://www.linkedin.com/in/alexschneider
                      city: Zurich
                      state: null
                      country: Switzerland
                      industry: Software Development
                      industries:
                      - Software
                      - Software Development
                    charged: 1
                    already_revealed: false
                    deliverable: true
                    verification: valid
                example2:
                  summary: Company
                  value:
                    found: true
                    type: company
                    charged: 0
                    company:
                      company: Evenito AG
                      company_normalized: Evenito
                      company_domain: evenito.com
                      industry: Software Development
                      city: Zurich
                      country: Switzerland
                example3:
                  summary: No match
                  value:
                    found: false
                    type: person
                    charged: 0
        '400':
          description: 400 Bad request. `invalid_request` when neither email, name with domain, nor domain was sent.
          headers:
            X-Request-Id:
              $ref: '#/components/headers/X-Request-Id'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorEnvelope'
              examples:
                invalid_request:
                  summary: invalid_request (neither email, name with domain, nor domain was sent)
                  value:
                    error:
                      code: invalid_request
                      message: Neither email, name with domain, nor domain was sent.
                      details: {}
                    request_id: req_8f2c1d9e0b7a4c3e9f1a2b3c4d5e6f70
                    detail: Neither email, name with domain, nor domain was sent.
        '401':
          description: 401 Unauthorized. `unauthorized` when the API key is missing, wrong or revoked.
          headers:
            X-Request-Id:
              $ref: '#/components/headers/X-Request-Id'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorEnvelope'
              examples:
                unauthorized:
                  summary: unauthorized (the API key is missing, wrong or revoked)
                  value:
                    error:
                      code: unauthorized
                      message: The API key is missing, wrong or revoked.
                      details: {}
                    request_id: req_8f2c1d9e0b7a4c3e9f1a2b3c4d5e6f70
                    detail: The API key is missing, wrong or revoked.
        '402':
          description: 402 Payment required. `insufficient_credits` when no credit left for a match.
          headers:
            X-Request-Id:
              $ref: '#/components/headers/X-Request-Id'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorEnvelope'
              examples:
                insufficient_credits:
                  summary: insufficient_credits (no credit left for a match)
                  value:
                    error:
                      code: insufficient_credits
                      message: No credit left for a match.
                      details: {}
                    request_id: req_8f2c1d9e0b7a4c3e9f1a2b3c4d5e6f70
                    detail: No credit left for a match.
        '403':
          description: 403 Forbidden. `scope_missing` when the key lacks argorant:unlock_contacts.
          headers:
            X-Request-Id:
              $ref: '#/components/headers/X-Request-Id'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorEnvelope'
              examples:
                scope_missing:
                  summary: scope_missing (the key lacks argorant:unlock_contacts)
                  value:
                    error:
                      code: scope_missing
                      message: The key lacks argorant:unlock_contacts.
                      details: {}
                    request_id: req_8f2c1d9e0b7a4c3e9f1a2b3c4d5e6f70
                    detail: The key lacks argorant:unlock_contacts.
        '409':
          description: 409 Conflict. `idempotency_conflict` when the Idempotency-Key was used with another body.
          headers:
            X-Request-Id:
              $ref: '#/components/headers/X-Request-Id'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorEnvelope'
              examples:
                idempotency_conflict:
                  summary: idempotency_conflict (the Idempotency-Key was used with another body)
                  value:
                    error:
                      code: idempotency_conflict
                      message: The Idempotency-Key was used with another body.
                      details: {}
                    request_id: req_8f2c1d9e0b7a4c3e9f1a2b3c4d5e6f70
                    detail: The Idempotency-Key was used with another body.
        '422':
          description: 422 Validation error. `validation_error` when a field has the wrong type or is missing.
          headers:
            X-Request-Id:
              $ref: '#/components/headers/X-Request-Id'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorEnvelope'
              examples:
                validation_error:
                  summary: validation_error (a field has the wrong type or is missing)
                  value:
                    error:
                      code: validation_error
                      message: A field has the wrong type or is missing.
                      details: {}
                    request_id: req_8f2c1d9e0b7a4c3e9f1a2b3c4d5e6f70
                    detail: A field has the wrong type or is missing.
        '429':
          description: 429 Too many requests. `rate_limited` when too many requests this minute.
          headers:
            X-Request-Id:
              $ref: '#/components/headers/X-Request-Id'
            X-RateLimit-Limit:
              $ref: '#/components/headers/X-RateLimit-Limit'
            X-RateLimit-Remaining:
              $ref: '#/components/headers/X-RateLimit-Remaining'
            X-RateLimit-Reset:
              $ref: '#/components/headers/X-RateLimit-Reset'
            Retry-After:
              $ref: '#/components/headers/Retry-After'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorEnvelope'
              examples:
                rate_limited:
                  summary: rate_limited (too many requests this minute)
                  value:
                    error:
                      code: rate_limited
                      message: Too many requests this minute.
                      details: {}
                    request_id: req_8f2c1d9e0b7a4c3e9f1a2b3c4d5e6f70
                    detail: Too many requests this minute.
      x-cost: 1 credit per person found whose email passes the check; the same person again, misses and companies are free
      x-side-effect: spends credits
      x-scopes:
      - argorant:unlock_contacts
      x-idempotent: true
      x-paginated: false
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required: []
              properties:
                email:
                  type: string
                  format: email
                  description: A work email to look up.
                  example: alex@evenito.com
                name:
                  type: string
                  description: A person's full name, together with domain.
                  example: Alex Schneider
                domain:
                  type: string
                  description: A company website domain. Alone it returns the company.
                  example: evenito.com
              anyOf:
              - required:
                - email
              - required:
                - name
                - domain
              - required:
                - domain
            example:
              email: alex@evenito.com
components:
  schemas:
    ErrorCode:
      type: string
      description: Stable error code. New codes may be added; treat unknown codes by their HTTP status.
      enum:
      - invalid_request
      - launch_blocked
      - unauthorized
      - api_key_required
      - plan_required
      - insufficient_credits
      - scope_missing
      - permission_missing
      - forbidden
      - not_found
      - route_not_found
      - method_not_allowed
      - conflict
      - idempotency_conflict
      - idempotency_in_progress
      - gone
      - quote_expired
      - validation_error
      - access_key_activation_required
      - rate_limited
      - daily_limit_reached
      - internal_error
      - unavailable
      - confirmation_required
      - invalid_webhook_url
      - phones_not_in_plan
      - card_not_charged
      - owner_only
      - quote_not_found
      - charge_in_progress
      - not_enough_names
      - not_paid
      - reason_required
      - not_connected
      - unsupported_tool
      - tool_key_rejected
      - price_mismatch
      - quote_other_session
      - export_failed
      - sign_in_failed
    ErrorEnvelope:
      type: object
      required:
      - error
      - request_id
      properties:
        error:
          $ref: '#/components/schemas/Error'
        request_id:
          type: string
          description: The id of this request, also in the X-Request-Id header. Quote it when you contact support.
          example: req_8f2c1d9e0b7a4c3e9f1a2b3c4d5e6f70
        detail:
          description: The older error field, kept for clients written before the envelope. Read error instead.
    Error:
      type: object
      required:
      - code
      - message
      properties:
        code:
          $ref: '#/components/schemas/ErrorCode'
        message:
          type: string
          description: One plain sentence that says what happened and what to do.
        details:
          type: object
          description: Extra facts for this error, for example needed and balance for insufficient_credits, fields for validation_error, blockers for launch_blocked.
          additionalProperties: true
  headers:
    Retry-After:
      description: Seconds to wait before the next try.
      schema:
        type: integer
    X-Request-Id:
      description: The id of this request. Quote it when you contact support.
      schema:
        type: string
    X-RateLimit-Remaining:
      description: Requests left in the current minute.
      schema:
        type: integer
    X-RateLimit-Limit:
      description: Requests this key may send per minute.
      schema:
        type: integer
    X-RateLimit-Reset:
      description: Seconds until the minute window starts again.
      schema:
        type: integer
  parameters:
    IdempotencyKey:
      name: Idempotency-Key
      in: header
      required: false
      description: 'Any unique text up to 128 characters. A retry with the same key and the same body within 24 hours returns the first answer (with the header Idempotent-Replayed: true) instead of doing the work twice. The same key with another body answers 409 idempotency_conflict.'
      schema:
        type: string
        maxLength: 128
      example: 6f1c2e7a-run-42
    RequestId:
      name: X-Request-Id
      in: header
      required: false
      description: Your own id for this request, 8 to 64 letters, digits, dot, dash or underscore. Returned as X-Request-Id; one is made for you when you send none.
      schema:
        type: string
        pattern: ^[A-Za-z0-9._-]{8,64}$
  securitySchemes:
    BearerAuth:
      type: http
      scheme: bearer
      bearerFormat: ag_live_...
      description: 'Your API key from app.argorant.com/profile, sent as `Authorization: Bearer <key>`. A connector sign-in token (ag_mcp_...) works the same way.'
externalDocs:
  description: Guides, the CLI and the MCP server for AI agents
  url: https://docs.argorant.com/docs