Skip to main content
Integrations with contact enrichment platforms for finding verified emails, phone numbers, and professional data.

Prospeo API

Prospeo provides access to 200M+ contacts with 30+ search filters, email verification, and person/company enrichment.

Base Configuration

Base URL
string
https://api.prospeo.io
Authentication
header
X-KEY: your_api_key
Content-Type: application/json
Get your API key at https://app.prospeo.io/api
Method
string
All endpoints use POST

Credit Costs

OperationCredits
Enrich Person (email only)1 per match
Enrich Person (with mobile)10 per match
Bulk Enrich PersonSame as single, per matched record
Search Person1 per page (up to 25 results)
No match found0 (no charge)
Duplicate enrichment0 (lifetime deduplication)

Rate Limits

Tier-based limits. Check response headers:
  • x-daily-request-left — Remaining daily requests
  • x-minute-request-left — Remaining per-minute requests
  • x-second-rate-limit — Per-second limit
  • x-daily-reset-seconds — Seconds until daily reset
  • x-minute-reset-seconds — Seconds until minute reset
Returns 429 when rate limit exceeded. Search 200M+ contacts with advanced filters.
POST /search-person
filters
object
required
Search filters objectEach filter has v (values array) and condition (“or” or “and”)
page
integer
Page number for pagination (25 results per page, max 1000 pages)Default: 1

Available Filters

filters.job_title
object
Free text job titles
{
  "v": ["VP of Sales", "Head of Sales"],
  "condition": "or"
}
Use Search Suggestions endpoint for exact values
filters.seniority
object
Seniority levelsOptions: C-Suite, VP, Director, Manager, Senior, Entry, Training, Intern
filters.department
object
DepartmentsOptions: Sales, Marketing, Engineering, Finance, HR, Operations, etc.
filters.person_location
object
Person location (country, state, or city)
{
  "v": ["United States", "United Kingdom"],
  "condition": "or"
}
filters.industry
object
Industries (150+ available)
{
  "v": ["Software", "Information Technology"],
  "condition": "or"
}
filters.employee_range
object
Company size rangesOptions: 1-10, 11-20, 21-50, 51-100, 101-200, 201-500, 501-1000, 1001-5000, 5001-10000, 10001+
filters.company_website
object
Company domains (up to 500 per request)
{
  "v": ["acme.com", "example.com"],
  "condition": "or"
}
filters.company_name
object
Company names
filters.company_location
object
Company location (country, state, or city)
filters.funding_stage
object
Funding stagesOptions: Seed, Series A, Series B, Series C, etc.
filters.technologies
object
Technologies usedOptions: Salesforce, HubSpot, etc.

Example Request

{
  "filters": {
    "job_title": {
      "v": ["VP of Sales", "Head of Sales"],
      "condition": "or"
    },
    "seniority": {
      "v": ["VP", "Director", "C-Suite"],
      "condition": "or"
    },
    "department": {
      "v": ["Sales"],
      "condition": "or"
    },
    "person_location": {
      "v": ["United States"],
      "condition": "or"
    },
    "employee_range": {
      "v": ["51-200", "201-500"],
      "condition": "or"
    }
  },
  "page": 1
}

Response

error
boolean
Error indicator
results
array
Array of person and company objectsNote: Does NOT include email/mobile — use Enrich Person for contact data
pagination
object
Pagination metadata
  • current_page: Current page number
  • per_page: Results per page (25)
  • total_page: Total pages available (max 1000)
  • total_count: Total matching records
{
  "error": false,
  "results": [
    {
      "person": {
        "id": "person-uuid",
        "first_name": "Jane",
        "last_name": "Doe",
        "full_name": "Jane Doe",
        "linkedin_url": "https://linkedin.com/in/janedoe",
        "title": "VP of Sales",
        "seniority": "VP",
        "department": "Sales",
        "location": "San Francisco, CA, US",
        "skills": ["B2B Sales", "SaaS", "Revenue Operations"]
      },
      "company": {
        "name": "Acme Corp",
        "website": "acme.com",
        "linkedin_url": "https://linkedin.com/company/acme",
        "industry": "Software",
        "headcount": 250,
        "founded_year": 2018,
        "location": "San Francisco, CA, US"
      }
    }
  ],
  "pagination": {
    "current_page": 1,
    "per_page": 25,
    "total_page": 40,
    "total_count": 1000
  }
}

Person Enrichment

Get verified email and optional mobile for a specific person.
POST /enrich-person

Required Fields

Provide at least one of these combinations:
  1. first_name + last_name + (company_website | company_name | company_linkedin_url)
  2. full_name + company info
  3. linkedin_url alone
  4. email alone
  5. person_id (from Search Person results)

Request Parameters

data
object
required
Person identification data
{
  "first_name": "Jane",
  "last_name": "Doe",
  "company_website": "acme.com"
}
only_verified_email
boolean
default:false
Only return if email is verified
enrich_mobile
boolean
default:false
Include mobile lookupCost: 10 credits instead of 1
only_verified_mobile
boolean
default:false
Only return if mobile is verified

Example Request

{
  "data": {
    "first_name": "Jane",
    "last_name": "Doe",
    "company_website": "acme.com"
  },
  "only_verified_email": true,
  "enrich_mobile": true,
  "only_verified_mobile": false
}

Response

error
boolean
Error indicator
free_enrichment
boolean
Whether this was a duplicate (no credit charged)
person
object
Person data with contact information
company
object
Company data
{
  "error": false,
  "free_enrichment": false,
  "person": {
    "first_name": "Jane",
    "last_name": "Doe",
    "full_name": "Jane Doe",
    "linkedin_url": "https://linkedin.com/in/janedoe",
    "title": "VP of Sales",
    "email": "[email protected]",
    "email_verified": true,
    "mobile": "+14155551234",
    "mobile_verified": true,
    "location": "San Francisco, CA, US",
    "skills": ["B2B Sales", "SaaS"]
  },
  "company": {
    "name": "Acme Corp",
    "website": "acme.com",
    "industry": "Software",
    "headcount": 250
  }
}

Error Codes

  • NO_MATCH: No person found matching criteria
  • INVALID_DATAPOINTS: Invalid or insufficient input data
  • INSUFFICIENT_CREDITS: Not enough credits
  • INVALID_API_KEY: Invalid API key
  • RATE_LIMITED: Rate limit exceeded

Bulk Person Enrichment

Enrich up to 50 records at once.
POST /bulk-enrich-person
only_verified_email
boolean
default:false
Only return verified emails
enrich_mobile
boolean
default:false
Include mobile lookup (10 credits per match)
only_verified_mobile
boolean
default:false
Only return verified mobiles
data
array
required
Array of person objects (max 50)Same matching rules as single enrichment

Example Request

{
  "only_verified_email": true,
  "enrich_mobile": false,
  "data": [
    {
      "first_name": "Jane",
      "last_name": "Doe",
      "company_website": "acme.com"
    },
    {
      "linkedin_url": "https://linkedin.com/in/johndoe"
    }
  ]
}

Response

error
boolean
Error indicator
total_cost
integer
Total credits consumed
matched
array
Successfully matched persons
not_matched
array
Persons with no match found
invalid_datapoints
array
Invalid input records
{
  "error": false,
  "total_cost": 5,
  "matched": [
    {
      "person": { ... },
      "company": { ... }
    }
  ],
  "not_matched": [
    {
      "first_name": "Unknown",
      "last_name": "Person",
      "company_website": "none.com"
    }
  ],
  "invalid_datapoints": []
}

FullEnrich API

FullEnrich uses waterfall enrichment — tries multiple data providers sequentially to maximize hit rate on emails and phones.

Base Configuration

Base URL
string
https://api.fullenrich.com/api/v1
Authentication
header
Authorization: Bearer YOUR_API_KEY
Get your API key at https://app.fullenrich.com/app/api

Credit Costs

Data PointCredits
Work email found1
Personal email found3
Mobile phone found10
Search result returned0.25 per contact/company
No result found0 (no charge)
Duplicate (within 3 months)0 (no charge)

Rate Limits

  • 60 API calls per minute (can be increased on request)
  • 100 contacts per bulk enrichment request
  • 100 concurrent enrichments in queue
  • 100 concurrent reverse lookups in queue
  • Effective throughput: ~6,000 contacts/minute

Processing Time

  • Average: 30-90 seconds per contact
  • Varies by data availability and waterfall depth
  • Use webhooks (recommended) instead of polling

Account Management

Check Credits

GET /account/credits
Response:
{
  "credits": 1234
}

Verify API Key

GET /account/keys/verify

Bulk Contact Enrichment

Asynchronous bulk enrichment with webhook delivery.
POST /contact/enrich/bulk

Required Fields

Provide at least one combination:
  1. first_name + last_name + domain (or company_name)
  2. linkedin_url (improves accuracy 5-20% for emails, 10-60% for phones)

Request Parameters

contacts
array
required
Array of contact objects (max 100)
[
  {
    "first_name": "Jane",
    "last_name": "Doe",
    "domain": "acme.com",
    "linkedin_url": "https://www.linkedin.com/in/janedoe/"
  }
]
webhook_url
string
URL for async result delivery (recommended over polling)
webhook_events
array
Events to trigger webhookOptions: ["contact_finished"] for per-contact notifications
boolean
Skip invalid contacts quietly (query parameter)

Contact Object Fields

first_name
string
Person first name
last_name
string
Person last name
domain
string
Company domain (recommended over company_name for better accuracy)
company_name
string
Company name (use domain when possible)
linkedin_url
string
LinkedIn profile URL (significantly improves accuracy)

Example Request

{
  "contacts": [
    {
      "first_name": "Jane",
      "last_name": "Doe",
      "domain": "acme.com",
      "linkedin_url": "https://www.linkedin.com/in/janedoe/"
    }
  ],
  "webhook_url": "https://your-server.com/webhook",
  "webhook_events": ["contact_finished"]
}

Initial Response

enrichment_id
string
UUID for tracking enrichment status
status
string
Processing status: processing, completed
total_contacts
integer
Number of contacts in batch
{
  "enrichment_id": "uuid",
  "status": "processing",
  "total_contacts": 5
}

Get Enrichment Results

GET /contact/enrich/bulk/{enrichment_id}
enrichment_id
string
Enrichment UUID
status
string
Status: processing or completed
results
array
Array of enriched contact data

Enrichment Result Structure

input
object
Original input data
work_email
object
Work email with verification status
{
  "email": "[email protected]",
  "verification_status": "DELIVERABLE"
}
personal_email
object
Personal email with verification status
mobile_phone
object
Mobile phone number
{
  "number": "+14155551234",
  "region": "US"
}
profile
object
Detailed person profileIncludes: full_name, title, location, linkedin_url, employment_history, education
company
object
Company informationIncludes: name, domain, industry, employee_count

Email Verification Statuses

StatusBounce RateRecommendation
DELIVERABLE~2%Safe to email
HIGH_PROBABILITY~9%Safe (catch-all validated)
CATCH_ALLHigherUse with caution
INVALIDLikely bouncesDo not email

Example Response

{
  "enrichment_id": "uuid",
  "status": "completed",
  "results": [
    {
      "input": {
        "first_name": "Jane",
        "last_name": "Doe",
        "domain": "acme.com"
      },
      "work_email": {
        "email": "[email protected]",
        "verification_status": "DELIVERABLE"
      },
      "personal_email": {
        "email": "[email protected]",
        "verification_status": "DELIVERABLE"
      },
      "mobile_phone": {
        "number": "+14155551234",
        "region": "US"
      },
      "profile": {
        "full_name": "Jane Doe",
        "title": "VP of Sales",
        "location": "San Francisco, CA",
        "linkedin_url": "https://linkedin.com/in/janedoe",
        "employment_history": [...],
        "education": [...]
      },
      "company": {
        "name": "Acme Corp",
        "domain": "acme.com",
        "industry": "Software",
        "employee_count": 250
      }
    }
  ]
}

Reverse Email Lookup

Find person and company from email address.
POST /contact/reverse/email/bulk
emails
array
required
Array of email addresses
webhook_url
string
Webhook URL for async delivery
Cost: 1 credit per match. Works with work and personal emails. Example:
{
  "emails": ["[email protected]", "[email protected]"],
  "webhook_url": "https://your-server.com/webhook"
}
Fetch results:
GET /contact/reverse/email/bulk/{enrichment_id}
Synchronous people search with filters.
POST /people/search
filters
object
required
Search filter criteria
{
  "job_title": ["VP of Sales", "Head of Sales"],
  "seniority": ["VP", "Director"],
  "location": ["United States"],
  "company_size": ["51-200", "201-500"],
  "industry": ["Software"]
}
page
integer
Page number for pagination
Cost: 0.25 credits per result returned Response: Synchronous (no polling needed)

Webhook Integration

Set webhook_url in bulk requests for async result delivery.

Webhook Events

  • contact_finished: Triggered per contact as it completes
  • Retries: Up to 5 times on delivery failure

Webhook Payload

Same structure as GET results endpoint.

Test Contact (Free)

Use this contact for testing at 0 credit cost:
{
  "first_name": "Grégoire",
  "last_name": "Démogé",
  "domain": "fullenrich.com",
  "linkedin_url": "https://www.linkedin.com/in/demoge/"
}

Data Retention

Results retained for 3 months (GDPR compliant). Re-enrichment within window costs 0 credits.

Build docs developers (and LLMs) love