API Documentation
Complete guide to integrate with Quick Enrich API
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.
| 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) |
{
"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"
}
}
Response:
Search Employee Phone
Look up an employee's phone number using the same parameters as email search: LinkedIn URL OR company URL + first name + last name. One credit is deducted only when a phone number is returned.
Company details: employee_count is a size range label (e.g. "51-200").
region_code is the state/province code (e.g. "CA").
country_code is the ISO 2-letter country (e.g. "US").
| 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) |
* Provide either linkedin_url OR all of company_url, first_name, last_name.
{
"success": true,
"message": "Employee phone fetched",
"code": 200,
"data": {
"first_name": "John",
"last_name": "Doe",
"company_name": "Tech Corp",
"company_url": "https://techcorp.com",
"employee_phone": "+1-555-0123",
"employee_phone_type": "direct",
"employee_count": "51-200",
"address": "123 Main St",
"city": "San Francisco",
"region_code": "CA",
"zip": "94105",
"country_code": "US"
},
"meta": {
"credits_used": 1,
"remaining_credits": 99
}
}
{
"success": true,
"message": "No records found",
"code": 200,
"data": [],
"meta": {
"credits_used": 0,
"reason": "PHONE_NOT_FOUND",
"remaining_credits": 100
}
}
Response:
Reverse Email Lookup
Search the QuickEnrich dataset by a single email address and return one best matching employee record. One credit is deducted only when a match is found and returned.
Company details: employee_count is a size range label (e.g. "51-200").
region_code is the state/province code (e.g. "CA").
country_code is the ISO 2-letter country (e.g. "US").
| Parameter | Type | Required | Description |
|---|---|---|---|
email |
string (email) | Yes | Email address to look up (exact match) |
{
"success": true,
"message": "Employee 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_phone_type": "direct",
"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"
},
"meta": {
"credits_used": 1,
"remaining_credits": 99
}
}
{
"success": true,
"message": "No records found",
"code": 200,
"data": [],
"meta": {
"credits_used": 0,
"reason": "EMAIL_NOT_FOUND",
"remaining_credits": 100
}
}
Response:
Domain Search by URL & Title
Search the QuickEnrich dataset by company URL and optional title.
Returns up to 20 contacts per page (use page to paginate through all results).
Rate limit: 300 requests/minute per API key.
If a title is provided, one credit is deducted per employee on the current page that has an email or phone.
If title is omitted, a flat 1 credit is charged when the page has results.
Company details: employee_count is a size range label (e.g. "51-200").
region_code is the state/province code (e.g. "CA").
country_code is the ISO 2-letter country (e.g. "US").
| Parameter | Type | Required | Description |
|---|---|---|---|
company_url |
string | No |
Company URL or domain (e.g. https://www.example.com,
www.example.com, or example.com).
|
title |
string | No |
Raw title string or comma-separated list of titles to search for (e.g. CEO,
or CEO, CFO, Chief Financial Officer). When multiple titles are provided,
the dataset will return employees whose title matches any of them.
|
page |
integer | No | Page number (default 1). Each page returns up to 20 contacts. |
has_email |
boolean | No | When true, only return contacts with a non-empty email in the database (not N/A). |
company_url is required. title, page, and has_email are optional.
{
"success": true,
"message": "Employees fetched",
"code": 200,
"data": [
{
"first_name": "Jane",
"last_name": "Doe",
"title": "Chief Executive Officer",
"email": "jane.doe@example.com",
"employee_phone": "+1-555-0000",
"employee_phone_type": "direct",
"employee_linkedin": "https://linkedin.com/in/janedoe",
"email_verification_date": "2024-01-15",
"company_url": "https://example.com",
"company_name": "Example Corp",
"email_domain": "example.com",
"company_linked": "https://linkedin.com/company/example",
"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"
},
{
"first_name": "John",
"last_name": "Smith",
"title": "Chief Financial Officer",
"email": "john.smith@example.com",
"employee_phone": "N/A",
"employee_phone_type": "N/A",
"employee_linkedin": "https://linkedin.com/in/johnsmith",
"email_verification_date": "2024-01-10",
"company_url": "https://example.com",
"company_name": "Example Corp",
"email_domain": "example.com",
"company_linked": "https://linkedin.com/company/example",
"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"
}
],
"meta": {
"page": 1,
"per_page": 20,
"total": 2,
"last_page": 1,
"credits_used": 2,
"remaining_credits": 98
}
}
{
"success": true,
"message": "No records found",
"code": 200,
"data": [],
"meta": {
"page": 1,
"per_page": 20,
"total": 0,
"last_page": 1,
"credits_used": 0,
"reason": "EMPLOYEE_NOT_FOUND",
"remaining_credits": 100
}
}
Response:
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 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 |
| Field | Include / exclude | Description |
|---|---|---|
company_name | JSON arrays | Open text — company name match |
city | JSON arrays | Open text — company city |
country_code | JSON arrays of strings | Exact match — values from GET /api/lookups/country-codes |
industry_linkedin | JSON arrays of strings | Exact match — values from GET /api/lookups/industries |
number_of_employees | JSON arrays of strings | Exact match — range labels from GET /api/lookups/employee-ranges |
revenue | JSON arrays of strings | Exact match — range labels from GET /api/lookups/revenue-ranges |
title | JSON arrays | Open text — employee job title |
locality | JSON arrays | Open text — employee locality |
has_email | boolean | When true, only return contacts with a non-empty email in the database (not N/A) |
has_phone | boolean | When true, only return contacts with a non-empty phone in the database (not N/A) |
page | integer | Page number (default 1) |
per_page | integer | Results 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.
{
"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
}
{
"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
}
}
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
}