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, revenue, and services 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
GET /api/lookups/company-services?q= Service name autocomplete — from UniqueCompanyServices View top values
Filter dimensions
Field Include / exclude Description
titleJSON arraysOpen text — employee job title
localityJSON arraysOpen text — employee locality
company_nameJSON arraysOpen text — company name match
company_urlJSON arraysOpen text — company website / domain
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
cityJSON arraysOpen text — company city
country_codeJSON arrays of stringsExact match — values from GET /api/lookups/country-codes (company country)
industry_linkedinJSON arrays of stringsExact match — values from GET /api/lookups/industries (company industry)
bio_liJSON arraysOpen text — search company LinkedIn "About" description
servicesJSON arrays of stringsExact match — values from GET /api/lookups/company-services
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
{
  "title": { "include": ["CEO", "Chief Executive Officer"], "exclude": ["Intern"] },
  "locality": { "include": ["San Francisco", "Miami"], "exclude": [] },
  "company_name": { "include": ["Acme"], "exclude": [] },
  "company_url": { "include": ["acme.com"], "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": [] },
  "bio_li": { "include": ["cloud solutions"], "exclude": [] },
  "services": { "include": ["DevOps"], "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",
      "home_page_email": "info@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
  }
}
POST /api/companies/company-finder

Company Finder

Search companies by home page text, LinkedIn description, services offered, industry, employee size, revenue, country, city, URL, and company name. 1 credit is deducted per company returned. Credits are waived for users with an active WebApp Unlimited subscription. Rate limit: 120 requests/minute per API key.

Validated fields: services, industry, country_code, 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. company_url accepts a single domain value (no include/exclude lists).

Lookup APIs (allowed values)

Lookup endpoints are public — no API key required.

Endpoint Returns
GET /api/lookups/company-services?q= Service names + usage counts — searchable by keyword View top values
GET /api/lookups/industries ["Computer Software", ...] — from industry_linkedin.industry View all values
GET /api/lookups/country-codes ["US", "GB", ...] — ISO 2-letter country codes View all values
GET /api/lookups/employee-ranges ["51-200", ...] — employee size range labels View all values
GET /api/lookups/revenue-ranges ["10M-50M", ...] — annual revenue range labels View all values
Filter dimensions
Field Include / exclude Description
home_page_textJSON arraysOpen text — search against scraped website copy
bio_liJSON arraysOpen text — search company LinkedIn "About" description
servicesJSON arrays of stringsExact match — values from GET /api/lookups/company-services
industryJSON 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
country_codeJSON arrays of stringsExact match — ISO 2-letter codes from GET /api/lookups/country-codes
cityJSON arraysOpen text — company city
company_nameJSON arraysOpen text — company name
company_urlstringSingle domain or URL — matches url, email_domain, and final_email_domain (no include/exclude lists)
pageintegerPage number (default 1)
per_pageintegerResults per page (default 10, max 100)
include_full_textbooleanWhen true, each result also includes full home_page_text. Default false — only home_page_text_snippet is returned

At least one filter is required: a non-empty include or exclude on any dimension, or a company_url value. Values within an include list are combined with OR; active dimensions are combined with AND.

Example Request
{
  "home_page_text": { "include": ["cloud migration"], "exclude": [] },
  "services": { "include": ["DevOps"], "exclude": [] },
  "industry": { "include": ["Computer Software"], "exclude": [] },
  "country_code": { "include": ["US"], "exclude": [] },
  "number_of_employees": { "include": ["51-200"], "exclude": [] },
  "company_url": "acme.com",
  "include_full_text": true,
  "page": 1,
  "per_page": 10
}
Example Response
{
  "success": true,
  "message": "Companies fetched",
  "code": 200,
  "data": [
    {
      "company_name": "Acme Cloud Solutions",
      "url": "acme.com",
      "email_domain": "acme.com",
      "final_email_domain": "acme.com",
      "home_page_email": "info@acme.com",
      "phone": "+1-555-0100",
      "linkedin_url": "https://linkedin.com/company/acme",
      "city": "Austin",
      "region_code": "TX",
      "country_code": "US",
      "industry": "Computer Software",
      "employee_count": "51-200",
      "revenue": "10M-50M",
      "services": ["DevOps", "AWS", "Cloud Migration"],
      "service_count": 3,
      "home_page_text_snippet": "We help enterprises modernize with cloud migration...",
      "bio_li_snippet": "Leading cloud solutions provider specializing in...",
      "home_page_text": "We help enterprises modernize with cloud migration and DevOps..."
    }
  ],
  "meta": {
    "page": 1,
    "per_page": 10,
    "total": 842,
    "last_page": 85,
    "credits_used": 10,
    "remaining_credits": 90
  }
}
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
}