Search Records
Search the eCore DataCore database with filters. The endpoint returns matching person records with their company and job information. Personally Identifiable Information (PII) fields — email, direct phone, mobile phone — are hidden until you unlock them with Unlock Records.
Endpoint
Method: GET
Path: /external/search/
Full URL: https://app.ecoreservice.com/backend/api/v1/external/search/
Auth: Authorization: Token YOUR_API_TOKEN — see Authentication
Cost: Free — search itself never charges credits
Query Parameters
All parameters are optional. Provide one or more to filter. With no filters, results are returned newest-first.
| Parameter | Type | Description |
|---|---|---|
industry | string | Filter by industry (e.g., Technology) |
job_title | string | Filter by job title (e.g., Software Engineer) |
job_level | string | Filter by job level (e.g., C Level, Vice President Level, Director Level) |
company_name | string | Filter by company name |
contact_office_country | string | Filter by country (e.g., United States) |
employee_range | string | Filter by employee count range (e.g., 1001-5000) |
revenue_range | string | Filter by revenue range (e.g., $100M-$500M) |
limit | integer | Results per page. Default: 10 |
offset | integer | Pagination offset. Default: 0 |
Example Request
curl -X GET \
"https://app.ecoreservice.com/backend/api/v1/external/search/?industry=Technology&job_level=C%20Level&limit=5" \
-H "Authorization: Token YOUR_API_TOKEN"
Successful Response — 200 OK
{
"success": true,
"count": 1250,
"results": [
{
"uuid": "a1b2c3d4-e5f6-7a8b-9c0d-1e2f3a4b5c6d",
"first_name": "John",
"last_name": "Doe",
"company_name": "Acme Corp",
"job_title": "CEO",
"job_level": "C Level",
"industry": "Technology",
"contact_linkedin_url": "https://linkedin.com/in/johndoe",
"contact_email": null,
"contact_direct_phone": null,
"contact_mobile_phone": null,
"is_email_unlocked": false,
"is_phone_unlocked": false
}
]
}
Response Fields
| Field | Type | Description |
|---|---|---|
success | boolean | Always true on 200 OK |
count | integer | Total records matching the filters (across all pages) |
results | array | Page slice — up to limit records |
results[].uuid | string | Record's UUID. Pass this to Unlock Records to reveal PII |
results[].contact_email | string | null | null until you unlock email for this record |
results[].contact_direct_phone | string | null | null until you unlock phone for this record |
results[].contact_mobile_phone | string | null | null until you unlock phone for this record |
results[].is_email_unlocked | boolean | true if this account has already unlocked email for this record |
results[].is_phone_unlocked | boolean | true if this account has already unlocked phone for this record |
Pagination
Use limit and offset to walk through results:
# Page 1 — records 0-9
curl ".../external/search/?industry=Technology&limit=10&offset=0" -H "Authorization: Token ..."
# Page 2 — records 10-19
curl ".../external/search/?industry=Technology&limit=10&offset=10" -H "Authorization: Token ..."
The count field gives you the total result size to know when you've reached the end.
Error Responses
| HTTP | When | Body |
|---|---|---|
| 401 | Missing or invalid token | {"detail": "Invalid token."} |
| 400 | Invalid parameter (e.g., non-integer limit) | {"error": "..."} |
See Error Codes for the full list.