API Documentation

Complete guide to integrate with Quick Enrich API

Production Ready API Key Protected Rate Limited
GET /api/employees/search

Email Search

Search for employees using LinkedIn URL AND/OR company URL, first name, and last name.
If you submit all 4 fields, it will FIRST search for the LinkedIn URL and if nothing is found it will search and verify the emails for the first name, last name, company URL.

Parameters
Parameter Type Required Description
linkedin_url string No* LinkedIn profile URL (exact match)
company_url string No* Company website URL (exact match)
first_name string No* Employee first name (exact match)
last_name string No* Employee last name (exact match)
Example Response
Response Format
{
  "success": true,
  "message": "Employees fetched",
  "code": 200,
  "data": {
    "first_name": "John",
    "last_name": "Doe",
    "title": "Senior Software Engineer",
    "email": "john.doe@company.com",
    "employee_phone": "+1-555-0123",
    "employee_linkedin": "https://linkedin.com/in/johndoe",
    "email_verification_date": "2024-01-15",
    "company_url": "https://techcorp.com",
    "company_name": "Tech Corp",
    "email_domain": "company.com",
    "company_linked": "https://linkedin.com/company/techcorp",
    "company_phone": "+1-555-9999",
    "industry": "Software",
    "revenue": "10M-50M",
    "employee_count": "51-200",
    "address": "123 Main St",
    "city": "San Francisco",
    "region_code": "CA",
    "zip": "94105",
    "country_code": "US"
  }
}
Test Email Search
Response:

                        
POST /api/employees/contact-finder

Contact Finder

Search contacts using multi-value include and exclude filters across company and employee fields. This is a discovery endpoint: responses do not include email or phone values. Set request flags has_email and/or has_phone to true to limit results to contacts that already have that data in the database. Each contact also includes has_email and has_phone booleans in the response so you know whether enrichment data exists before calling Employee Search or Phone Search with the returned employee_linkedin (and name/company fields when needed). Rate limit: 120 requests/minute per API key. Search is free (credits_used: 0).

Validated fields: country_code, industry_linkedin, number_of_employees, and revenue must be exact strings from the lookup APIs below (422 if not in the list). All other filter fields are open text.

Lookup APIs (allowed values)

Lookup endpoints are public — no API key required. Use the links below to browse all allowed values.

Endpoint Returns
GET /api/lookups/country-codes ["US", "GB", ...] — ISO 2-letter codes from country_codes.country_code_2_character View all values
GET /api/lookups/industries ["Computer Software", ...] — from industry_linkedin.industry View all values
GET /api/lookups/employee-ranges ["51-200", ...] — from number_of_employees.range View all values
GET /api/lookups/revenue-ranges ["10M-50M", ...] — from yearly_revenues View all values
Filter dimensions
Field Include / exclude Description
company_nameJSON arraysOpen text — company name match
cityJSON arraysOpen text — company city
country_codeJSON arrays of stringsExact match — values from GET /api/lookups/country-codes
industry_linkedinJSON arrays of stringsExact match — values from GET /api/lookups/industries
number_of_employeesJSON arrays of stringsExact match — range labels from GET /api/lookups/employee-ranges
revenueJSON arrays of stringsExact match — range labels from GET /api/lookups/revenue-ranges
titleJSON arraysOpen text — employee job title
localityJSON arraysOpen text — employee locality
has_emailbooleanWhen true, only return contacts with a non-empty email in the database (not N/A)
has_phonebooleanWhen true, only return contacts with a non-empty phone in the database (not N/A)
pageintegerPage number (default 1)
per_pageintegerResults per page (default 10, max 100)

At least one filter is required: a non-empty include or exclude on any dimension, or has_email / has_phone set to true. Values within an include list are combined with OR; active dimensions are combined with AND.

Example Request
{
  "company_name": { "include": ["Acme"], "exclude": [] },
  "city": { "include": ["San Francisco", "Austin"], "exclude": [] },
  "country_code": { "include": ["US"], "exclude": [] },
  "industry_linkedin": { "include": ["Computer Software"], "exclude": [] },
  "number_of_employees": { "include": ["51-200"], "exclude": [] },
  "revenue": { "include": ["10M-50M"], "exclude": [] },
  "title": { "include": ["CEO", "Chief Executive Officer"], "exclude": ["Intern"] },
  "locality": { "include": ["San Francisco", "Miami"], "exclude": [] },
  "has_email": true,
  "has_phone": true,
  "page": 1,
  "per_page": 10
}
Example Response
{
  "success": true,
  "message": "Contacts fetched",
  "code": 200,
  "data": [
    {
      "first_name": "Jane",
      "last_name": "Doe",
      "title": "Chief Executive Officer",
      "employee_linkedin": "https://linkedin.com/in/janedoe",
      "has_email": true,
      "has_phone": false,
      "company_url": "https://example.com",
      "company_name": "Example Corp",
      "email_domain": "example.com",
      "city": "San Francisco",
      "locality": "San Francisco Bay Area",
      "country_code": "US"
    }
  ],
  "meta": {
    "page": 1,
    "per_page": 10,
    "total": 1,
    "last_page": 1,
    "credits_used": 0,
    "remaining_credits": 100
  }
}
Error Error Responses

Common Error Responses

401 Unauthorized

Invalid or missing API key

{
  "success": false,
  "message": "Invalid API key",
  "code": 401
}
429 Too Many Requests

Rate limit exceeded

{
  "success": false,
  "message": "Rate limit exceeded. Try again later.",
  "code": 429
}
400 Bad Request

Invalid parameters or missing required fields

{
  "success": false,
  "message": "Invalid search parameters. Provide either linkedin_url OR (company_url, first_name, last_name)",
  "code": 400
}