Enrich API
    • Introduction
    • Quickstart
    • API Reference
    • Credits & Pricing
    • Rate Limits
    • Authentication
    • Company Followers
      • Count Estimation
        • Start count estimation
        • Get estimation status/results
      • Start company follower scrape
        POST
      • Check scrape progress
        GET
      • Get scrape results
        GET
      • Export results as CSV
        GET
      • Check daily scraping limit
        GET
    • Email Validation
      • Validate a single email
        POST
      • Validate emails in batch
        POST
      • Check batch validation progress
        GET
      • Get batch validation results
        GET
    • Email Finder
      • Find a professional email
        POST
      • Find emails in batch
        POST
      • Check batch finder progress
        GET
      • Get batch finder results
        GET
    • Phone Finder
      • Find phone numbers
        GET
      • Find phone numbers in batch
        POST
      • Check bulk phone lookup progress
        GET
      • Get bulk phone lookup results
        GET
    • Reverse Email Lookup
      • Look up professional profiles in batch
        POST
      • Look up a professional profile by email
        POST
      • Check bulk lookup progress
        GET
      • Get bulk lookup results
        GET
    • Wallets
      • Get your credit balance
      • Get transaction history
    • Teams
      • List team members
      • Invite someone to your team
      • List pending invitations
      • Cancel a pending invitation
    • Webhooks
      • Email Validation: per-result callback
      • Email Validation: batch completion callback
      • Email Finder: per-result callback
      • Email Finder: batch completion callback
      • Phone Finder: per-result callback
      • Phone Finder: batch completion callback
      • Reverse Lookup: per-result callback
      • Reverse Lookup: batch completion callback
      • Company Followers: per-result callback
      • Company Followers: completion callback
    • Lead Finder
      • Search leads
      • Export leads to CSV (async)
      • Count matching leads
      • Reveal contact info
      • Enrich contacts with specific fields
      • Unlock full last names
      • List saved searches
      • Save a search
      • Delete a saved search
      • Get filter options
      • Suggest company names
      • Poll reveal/enrich job
      • List reveal/enrich jobs
      • List export jobs
      • Poll export job status
      • Download export CSV
    • People Search
      • Cascading ICP people search
      • Find employees at a company
    • Schemas
      • Schemas
        • EnrichmentMeta
        • BatchResultsMeta
        • EmailValidationRequest
        • BatchEmailValidationRequest
        • EmailValidationResult
        • EmailValidationResponse
        • EmailValidationBatchResultsResponse
        • EmailFinderRequest
        • Lead
        • BatchEmailFinderRequest
        • EmailFinderResult
        • EmailFinderResponse
        • EmailFinderBatchResultsResponse
        • BatchSubmitData
        • BatchSubmitResponse
        • BatchStatusData
        • BatchStatusResponse
        • LookupRequest
        • StartEndDate
        • EducationHistoryItem
        • PositionHistoryItem
        • ReverseLookupResult
        • ReverseLookupResponse
        • BulkLookupResultsResponse
        • PhoneBatchRequest
        • PhoneLookupResult
        • PhoneLookupResponse
        • PhoneBulkJobSubmitData
        • PhoneBulkJobSubmitResponse
        • PhoneBulkJobStatusData
        • PhoneBulkJobStatusResponse
        • PhoneBulkResultItem
        • PhoneBulkJobResultsResponse
        • WalletBalance
        • WalletBalanceResponse
        • WalletTransaction
        • Pagination
        • WalletTransactionsResponse
        • TeamMember
        • Invitation
        • InviteBody
        • TeamMemberListResponse
        • InvitationResponse
        • InvitationListResponse
        • SuccessOperationResponse
        • WebhookEmailValidationResult
        • WebhookEmailFinderResult
        • WebhookPhoneResult
        • WebhookReverseLookupResult
        • WebhookEmailValidationCompletion
        • WebhookEmailFinderCompletion
        • WebhookPhoneCompletion
        • WebhookReverseLookupCompletion
        • CompanyFollowerRequest
        • StartCompanyFollowerResponse
        • StartCompanyFollowerData
        • CompanyFollowerProgressResponse
        • CompanyFollowerProgressData
        • CompanyFollowerResultsResponse
        • CompanyFollowerResultsData
        • FollowerProfile
        • CountEstimateRequest
        • StartCountEstimateResponse
        • StartCountEstimateData
        • CountEstimateStatusResponse
        • CountEstimateStatusData
        • CountEstimateResultData
        • FunctionBreakdownItem
        • SeniorityBreakdownItem
        • WebhookCompanyFollowerResult
        • WebhookCompanyFollowerCompletion
      • Response
        • BadRequest
        • Unauthorized
        • InsufficientCredits
        • NotFound
        • RateLimited
        • InternalError
      • ErrorEnvelope
      • BatchSubmitMeta
      • AsyncExportResponse
      • LeadExportJobProgress
      • LeadExportJobStatusResponse
      • LeadExportJobSummary
      • LeadExportJobListResponse
      • BulkLookupRequest
      • RevealJobSubmitResponse
      • BulkLookupSubmitData
      • RevealJobPollResponse
      • BulkLookupResponse
      • RevealJobSummary
      • RevealJobListResponse
      • LeadFinderSearchFilters
      • LeadSearchPreviewResult
      • LeadFinderPagination
      • LeadSearchRequest
      • LeadSearchResponse
      • LeadCountRequest
      • LeadCountResponse
      • LeadExportRequest
      • LeadRevealRequest
      • RevealedContact
      • LeadRevealResponse
      • LeadEnrichRequest
      • LeadEnrichResult
      • LeadEnrichResponse
      • UnlockNamesRequest
      • UnlockNamesResponse
      • SavedSearchItem
      • SavedSearchCreateRequest
      • SavedSearchListResponse
      • SavedSearchResponse
      • LeadFinderFilterOptionsResponse
      • LeadFinderSuggestResponse
      • LeadFinderDeletedResponse
      • AccessDeniedResponse

    API Reference

    Base URL:
    https://dev.enrich.so
    All endpoints require an API key via x-api-key header or Authorization: Bearer sk_*. See Authentication.

    Response format#

    Success#

    {
      "success": true,
      "data": { ... },
      "meta": {
        "requestId": "req_abc123",
        "creditsUsed": 10,
        "creditsRemaining": 990
      }
    }

    Error (RFC 9457 Problem Details)#

    {
      "type": "https://dev.enrich.so/errors/validation-error",
      "title": "Validation Error",
      "status": 400,
      "detail": "Human-readable explanation",
      "instance": "/requests/req_abc123"
    }

    Email Validation#

    Validate single email#

    Checks if an email address is deliverable.
    POST /api/v3/email-validation
    Credits: 1
    Request body:
    FieldTypeRequiredDescription
    emailstringYesEmail address to validate
    Response:
    {
      "success": true,
      "data": {
        "email": "jane@example.com",
        "status": "valid",
        "subStatus": "",
        "freeEmail": false,
        "disposable": false,
        "catchAll": false
      },
      "meta": {
        "requestId": "req_abc123",
        "creditsUsed": 1,
        "creditsRemaining": 999
      }
    }

    Submit batch validation#

    Submit up to 500,000 emails for async validation. Credits are reserved upfront and settled when you fetch results.
    POST /api/v3/email-validation/batch
    Credits: 1 per email (reserved on submit, settled on results)
    Request body:
    FieldTypeRequiredDescription
    emailsstring[]YesArray of emails (1–500,000)
    webhookUrlstringNoURL to notify when batch completes
    Response:
    {
      "success": true,
      "data": {
        "batchId": "batch_abc123",
        "status": "queued",
        "itemCount": 2
      },
      "meta": {
        "requestId": "req_def456",
        "creditsReserved": 2,
        "creditsPerItem": 1
      }
    }

    Get batch status#

    Poll for batch processing status. Free — no credits consumed.
    GET /api/v3/email-validation/batch/:batchId
    Response:
    {
      "success": true,
      "data": {
        "batchId": "batch_abc123",
        "status": "processing",
        "totalItems": 2,
        "processedItems": 1,
        "progress": 50
      }
    }

    Get batch results#

    Retrieve results with pagination. Credits are settled on the first call when the batch reaches a terminal status (completed, failed).
    GET /api/v3/email-validation/batch/:batchId/results
    Query parameters:
    ParamTypeDefaultDescription
    pagenumber1Page number (1-based)
    limitnumber100Results per page (1–1000)
    Response:
    {
      "success": true,
      "data": {
        "batchId": "batch_abc123",
        "status": "completed",
        "totalItems": 2,
        "processedItems": 2,
        "results": [
          {
            "email": "a@example.com",
            "status": "valid"
          },
          {
            "email": "b@example.com",
            "status": "invalid"
          }
        ]
      },
      "meta": {
        "creditsUsed": 2,
        "creditsRemaining": 997
      }
    }

    Email Finder#

    Find email by name and domain#

    Find someone's professional email address from their name and company domain.
    POST /api/v3/email-finder
    Credits: 10
    Request body:
    FieldTypeRequiredDescription
    firstNamestringYesPerson's first name
    lastNamestringYesPerson's last name
    domainstringYesCompany domain
    Response:
    {
      "success": true,
      "data": {
        "email": "jane.doe@example.com",
        "confidence": "high",
        "firstName": "Jane",
        "lastName": "Doe",
        "domain": "example.com"
      },
      "meta": {
        "requestId": "req_abc123",
        "creditsUsed": 10,
        "creditsRemaining": 990
      }
    }

    Submit batch email finder#

    Submit up to 500,000 leads for async email finding.
    POST /api/v3/email-finder/batch
    Credits: 10 per lead (reserved on submit, settled on results)
    Request body:
    FieldTypeRequiredDescription
    leadsLead[]YesArray of leads (1–500,000)
    webhookUrlstringNoURL to notify when batch completes
    Each Lead object:
    FieldTypeRequired
    firstNamestringYes
    lastNamestringYes
    domainstringYes
    Response:
    {
      "success": true,
      "data": {
        "batchId": "batch_abc123",
        "status": "queued",
        "itemCount": 2
      },
      "meta": {
        "creditsReserved": 20,
        "creditsPerItem": 10
      }
    }

    Get batch status#

    GET /api/v3/email-finder/batch/:batchId
    Same response format as Email Validation batch status.

    Get batch results#

    GET /api/v3/email-finder/batch/:batchId/results
    Query parameters: page (default 1), limit (default 100, max 1000)
    Credits settled on first call when batch is complete — 10 credits per successfully found email.

    Reverse Email Lookup#

    Look up professional profile by email#

    Retrieve professional profile information for a single email address. Results are cached for 7 days.
    POST /api/v3/reverse-lookup/lookup
    Credits: 10 (refunded if no profile found)
    Request body:
    FieldTypeRequiredDescription
    emailstringYesEmail address to look up
    Response:
    {
      "success": true,
      "data": {
        "found": true,
        "email": "jane@example.com",
        "linkedinUrl": "https://example.com/in/janedoe",
        "firstName": "Jane",
        "lastName": "Doe",
        "title": "VP of Engineering",
        "company": "Example Inc"
      },
      "meta": {
        "requestId": "req_abc123",
        "creditsUsed": 10,
        "creditsRemaining": 990
      }
    }
    If no profile is found, data.found is false and credits are refunded.

    Submit bulk email lookup#

    Submit up to 100,000 emails for async professional profile lookup.
    POST /api/v3/reverse-lookup/bulk-lookup
    Credits: 10 per email (reserved on submit, settled on results)
    Request body:
    FieldTypeRequiredDescription
    emailsstring[]YesArray of emails (1–100,000)
    webhookUrlstringNoURL to notify when batch completes
    Response:
    {
      "success": true,
      "data": {
        "batchId": "batch_abc123",
        "status": "queued",
        "itemCount": 2
      },
      "meta": {
        "creditsReserved": 20,
        "creditsPerItem": 10
      }
    }

    Get bulk lookup status#

    GET /api/v3/reverse-lookup/bulk-lookup/:batchId
    Free — no credits consumed.

    Get bulk lookup results#

    GET /api/v3/reverse-lookup/bulk-lookup/:batchId/results
    Query parameters: page (default 1), limit (default 100, max 1000)
    Credits settled on first call when batch reaches terminal status — 10 credits per processed email.

    Phone Finder#

    Look up phone numbers#

    Retrieve phone numbers associated with an email address or profile URL.
    GET /api/v3/reverse-lookup/phones
    Credits: 500 (refunded if no phone found)
    Query parameters:
    ParamTypeRequiredDescription
    emailstringNo*Email address to look up
    linkedinstringNo*Profile URL
    *At least one of email or linkedin is required.
    Response:
    {
      "success": true,
      "data": {
        "found": true,
        "phones": [
          {
            "number": "+14155551234",
            "type": "mobile"
          }
        ]
      },
      "meta": {
        "requestId": "req_abc123",
        "creditsUsed": 500,
        "creditsRemaining": 500
      }
    }

    Submit bulk phone lookup#

    Submit up to 500,000 email addresses and/or profile URLs for async phone lookup.
    POST /api/v3/reverse-lookup/phones/bulk
    Credits: 500 per item (reserved on submit, settled on results)
    Request body:
    FieldTypeRequiredDescription
    emailsstring[]No*Email addresses (up to 500,000)
    linkedinsstring[]No*Profile URLs (up to 500,000)
    webhookUrlstringNoURL to notify when job completes
    *Total of emails + linkedins must be between 1 and 500,000.
    Response:
    {
      "success": true,
      "data": {
        "batchId": "abc123def456abc123def456",
        "status": "queued",
        "itemCount": 2
      },
      "meta": {
        "creditsReserved": 1000,
        "creditsPerItem": 500
      }
    }

    Get bulk phone lookup status#

    GET /api/v3/reverse-lookup/phones/bulk/:jobId
    The jobId is a 24-character hex string. Free — no credits consumed.
    Response:
    {
      "success": true,
      "data": {
        "batchId": "abc123def456abc123def456",
        "status": "processing",
        "totalItems": 2,
        "processedItems": 1,
        "progress": 50
      }
    }

    Get bulk phone lookup results#

    GET /api/v3/reverse-lookup/phones/bulk/:jobId/results
    Query parameters: page (default 1), limit (default 100, max 1000)
    Credits settled on first call when job reaches terminal status — 500 credits per item with results.

    Wallet#

    Get balance#

    Check your organization's credit balance.
    GET /api/v3/wallets/balance
    Response:
    {
      "success": true,
      "data": {
        "balance": 10000
      }
    }

    Get transactions#

    View paginated transaction history for your organization.
    GET /api/v3/wallets/transactions
    Query parameters:
    ParamTypeDefaultDescription
    pagenumber1Page number
    limitnumber20Results per page
    typestring—Filter by transaction type

    Error types#

    StatusTypeDescription
    400validation-errorInvalid request body or parameters
    401unauthorizedMissing or invalid API key
    402insufficient-creditsNot enough credits for the operation
    403forbiddenAccount suspended or org not found
    404not-foundResource not found
    429rate-limit-exceededToo many requests
    502upstream-failureCommunication failure
    503service-unavailableService temporarily unavailable
    504timeoutRequest timed out
    500internal-errorUnexpected server error
    All error responses follow RFC 9457 Problem Details format with type, title, status, and detail fields.
    Modified at 2026-02-02 16:14:20
    Previous
    Quickstart
    Next
    Credits & Pricing
    Built with