Explee Public API
Version: 1.0.0
> Tip: This documentation is designed for humans. To integrate with AI agents, provide them with the OpenAPI schema at https://api.explee.com/public/api/openapi.json instead.
Search millions of companies worldwide using natural language queries and structured filters!
Rate limit: 100 requests per hour, 2 concurrent requests per organization. Timeout: 90s.
Authentication
ApiKeyAuth: apiKey - Get your API key at [Organization Settings](https://explee.com/organization#api-keys)
Endpoints
POST /public/api/v1/search/companies
Companies
Search for companies using structured definitions.
## How It Works
Provide a structured definition of your target companies in the `definition` field — our AI will find matching companies.
All other filters are optional.
See the request schema below for the full list of available filters.
**Definition examples:**
- `"YouTube video summarization tool"`
- `"electronic signature platform"`
- `"AI B2B SaaS"`
- `"real estate company"`
## AI Enrichment
Use the `criteria` parameter to score companies against custom criteria.
Each company will be evaluated and scored (0-5) with reasoning for each criterion.
## Pricing
- **0.5 credits** per company returned
- **+0.1 credits** per company per criterion (AI enrichment)
Example: 100 companies with 2 criteria = 100 × (0.5 + 0.1 × 2) = 70 credits
Empty results = 0 credits.
Request Body
Request body required
Responses
200: Successful Response401: Invalid or missing API key. Include `X-API-Key` header.402: Insufficient credit balance. Top up your account.422: Validation error. Check request body and parameters.429: Rate limit exceeded (100/hour) or concurrent limit reached (2 per organization).500: Internal server error. Contact support if persists.504: Request timeout. Please try again later.
POST /public/api/v1/search/people
People
Search for people (employees) at companies matching your criteria.
## How It Works
Provide `job_titles` in `people_filters` to find people by their role.
Use `company_filters.definition` to narrow down which companies to search.
Use `company_linkedin_ids` to restrict results to a specific list of company LinkedIn IDs.
**Job title examples:**
- `["Head of Sales", "VP Sales"]`
- `["CTO", "VP Engineering"]`
- `["Founder", "CEO"]`
## AI Enrichment
Use the `criteria` parameter in `people_filters` to score people against custom criteria.
Each person will be evaluated and scored (0-5) with reasoning for each criterion.
## Pricing
- **1.0 credit** per person returned
- **+0.1 credits** per person per criterion (AI enrichment)
Example: 100 people with 2 criteria = 100 × (1.0 + 0.1 × 2) = 120 credits
Empty results = 0 credits.
Request Body
Request body required
Responses
200: Successful Response401: Invalid or missing API key. Include `X-API-Key` header.402: Insufficient credit balance. Top up your account.422: Validation error. Check request body and parameters.429: Rate limit exceeded (100/hour) or concurrent limit reached (2 per organization).500: Internal server error. Contact support if persists.504: Request timeout. Please try again later.
POST /public/api/v1/search/people-by-domains
People by Domains
Find people at companies by their domains.
**How it works:**
1. Provide a list of company domains (up to 1000) and job titles to search for
2. The system finds companies by domains
3. Returns up to `people_per_company` people per found company with matching job titles
**Job title matching:**
- Uses semantic search: "Head of Sales" will match "VP Sales", "Sales Director", etc.
- Multiple job titles are combined with OR logic
**Parameters:**
- `people_per_company`: Number of people to return per company (1-1000, default: 1)
**Limits:**
- Maximum 1000 domains per request
- Maximum 20 job titles per request
- Maximum 1000 people per company
- Maximum 10000 people per response (total)
**Billing:**
- 1 credit per person returned
Request Body
Request body required
Responses
200: Successful Response401: Invalid or missing API key. Include `X-API-Key` header.402: Insufficient credit balance. Top up your account.422: Validation error. Check request body and parameters.429: Rate limit exceeded (100/hour) or concurrent limit reached (2 per organization).500: Internal server error. Contact support if persists.504: Request timeout. Please try again later.
POST /public/api/v1/enrich/email
Find email by name
Find email address for a single person.
## How It Works
Provide the person's first name, last name, and company domain.
## Presets
| Preset | Cost | Success Rate | Description |
|--------|------|--------------|-------------|
| **basic** | 1.5 credits | ~50% | Single provider, pattern-based lookup. Fast and cheap. |
| **premium** | 5.0 credits | ~78% | 6 providers with cross-validation. Higher accuracy. |
## Pricing
You are only charged when an email is found.
Email not found = 0 credits.
Request Body
Request body required
Responses
200: Successful Response401: Invalid or missing API key. Include `X-API-Key` header.402: Insufficient credit balance. Top up your account.422: Validation error. Check request body and parameters.429: Rate limit exceeded (100/hour) or concurrent limit reached (2 per organization).500: Internal server error. Contact support if persists.504: Request timeout. Please try again later.
POST /public/api/v1/enrich/email/batch
Find email by name (batch request)
Find email addresses for multiple contacts in one request (async).
**How it works:**
1. Submit up to 100 contacts with first_name, last_name, company_domain
2. Receive a `task_id` immediately
3. Poll GET endpoint with `task_id` to check status and retrieve results
**Limits:**
- Maximum 100 contacts per batch
**Pricing:**
- **basic**: 1.5 credits per found email
- **premium**: 5 credits per found email
- Only charged for emails found (not found = 0 credits)
Request Body
Request body required
Responses
200: Successful Response401: Invalid or missing API key. Include `X-API-Key` header.402: Insufficient credit balance. Top up your account.422: Validation error. Check request body and parameters.429: Rate limit exceeded (100/hour) or concurrent limit reached (2 per organization).500: Internal server error. Contact support if persists.504: Request timeout. Please try again later.
GET /public/api/v1/enrich/email/batch/{task_id}
Find email by name (batch results)
Check status and retrieve results for a batch request.
**Statuses (in meta.status):**
- `pending` — processing in progress, poll again in a few seconds
- `completed` — results ready, `contacts` array contains enriched data
- `failed` — error occurred, see `meta.error` for details
**Response structure:**
- `contacts` — null while pending, array when completed
- `meta.status` — current processing status
- `meta.error` — error description (null if no error)
- `meta.credits_charged` — credits used (only charged for found emails)
**Typical workflow:**
1. POST to submit batch, get `task_id`
2. GET with `task_id`, check `meta.status`
3. If `pending`, wait 2-5 seconds and poll again
4. When `completed`, read `contacts` array
Parameters
task_id (path, required): Task ID returned from POST request
Responses
200: Successful Response401: Invalid or missing API key. Include `X-API-Key` header.402: Insufficient credit balance. Top up your account.422: Validation error. Check request body and parameters.429: Rate limit exceeded (100/hour) or concurrent limit reached (2 per organization).500: Internal server error. Contact support if persists.504: Request timeout. Please try again later.404: Batch not found
GET /public/api/v1/tasks
List batch enrichment tasks
List all batch email enrichment tasks for your API key.
**Use cases:**
- Track status of submitted batch requests
- Find task IDs you may have lost
- Monitor pending vs completed tasks
**Response:**
- `tasks` — array of task objects with status and result URL
- `total` — total count for pagination
**Filtering:**
- Use `status` parameter to filter by task status (pending, completed, failed)
Parameters
status (query, optional): Filter by task statuslimit (query, optional): Maximum number of tasks to returnoffset (query, optional): Number of tasks to skip (for pagination)
Responses
200: Successful Response422: Validation Error