LastDatabase API Documentation
The LastDatabase API provides programmatic access to lead-data search, B2B contact discovery and unlocking, email verification, phone verification, WhatsApp number verification, Telegram number verification, account credits and API usage information.
Authenticated endpoints use your LastDatabase customer API key as a Bearer token.
A single active customer API key can authenticate supported LastDatabase API services. You do not need a separate API key for lead search, email verification, phone verification, WhatsApp verification and Telegram verification.
API request capacity is separate from product consumption. Your API plan controls technical request limits and API-key capacity. Product packages determine lead-record allowance, verification credits and messaging-verification wallet funds.
Quick Start
1. Create an API key
Sign in to your customer account and open API Management. Generate an API key for your application and store it securely on your server.
2. Send the Bearer token
Authorization: Bearer YOUR_API_KEY Accept: application/json
3. Test a non-destructive search
curl -X GET \ "https://lastdatabase.com/api/integrations/v1/people/search?country=USA&industry=technology&limit=5" \ -H "Authorization: Bearer YOUR_API_KEY" \ -H "Accept: application/json"
People Search is a discovery operation. Email addresses returned by this endpoint are masked. Use People Unlock when you intentionally want to unlock an individual B2B contact.
Authentication
Protected API endpoints use HTTP Bearer authentication. Include your
active API key in the Authorization request header.
Authorization: Bearer YOUR_API_KEY
Missing credentials return HTTP 401 Unauthorized with a missing-token response. An invalid or disabled API key also returns HTTP 401.
Each authenticated request counts toward the daily request allowance attached to the API key. When the key reaches its daily limit, the API returns HTTP 429 Too Many Requests.
See the complete API Authentication guide for credential storage, key rotation, rate limits and production security practices.
Endpoint Directory
| Method | Endpoint | Purpose | Authentication |
|---|---|---|---|
| GET | /api/integrations/v1/capabilities |
Discover supported integration capabilities. | Public |
| GET | /api/leads/search |
Search B2B, consumer email, phone, mixed or fax data. | Bearer API key |
| GET | /api/integrations/v1/people/search |
Search B2B people while keeping email addresses masked. | Bearer API key |
| POST | /api/integrations/v1/people/unlock |
Unlock one B2B contact through the shared customer allowance. | Bearer API key |
| POST | /api/integrations/v1/email/verify |
Verify an email address. | Bearer API key |
| POST | /api/integrations/v1/phone/verify |
Verify one phone number. | Bearer API key |
| POST | /api/integrations/v1/whatsapp/verify |
Submit a bulk WhatsApp number-verification job. | Bearer API key |
| POST | /api/integrations/v1/telegram/verify |
Submit a bulk Telegram number-verification job. | Bearer API key |
| GET | /api/integrations/v1/credits |
Read lead-subscription and API-request availability. | Bearer API key |
Lead Data Search API
The general lead-search endpoint supports multiple LastDatabase data
inventories through the type query parameter.
GET https://lastdatabase.com/api/leads/search
| type | Dataset |
|---|---|
email | B2B email / business contact data |
consumer_email | Consumer email data |
phone | Phone lead data |
mixed | Mixed lead data |
fax | Fax data |
Supported search criteria include country, city, industry and keyword where applicable. The result limit is bounded by the endpoint.
curl -X GET \ "https://lastdatabase.com/api/leads/search?type=email&country=USA&industry=technology&keyword=CEO&limit=10" \ -H "Authorization: Bearer YOUR_API_KEY" \ -H "Accept: application/json"
Response envelope
{
"status": true,
"type": "email",
"count": 10,
"data": [
...
]
}
The data fields depend on the selected inventory type.
Applications should tolerate nullable or unavailable fields instead of
assuming that every record contains every possible attribute.
For detailed filtering and implementation guidance, see API Search and Filtering.
People Search and Unlock API
The integration People API separates discovery from consumption. Search returns B2B contacts with masked email addresses. Unlock is a separate operation.
Search people
GET /api/integrations/v1/people/search
| Parameter | Required | Rules |
|---|---|---|
keyword |
Conditional | String, maximum 150 characters. |
country |
Conditional | String, maximum 100 characters. |
city |
Conditional | String, maximum 100 characters. |
industry |
Conditional | String, maximum 150 characters. |
limit |
No | Integer 1–50. Default: 25. |
At least one of keyword, country,
city or industry must contain a value.
curl -X GET \ "https://lastdatabase.com/api/integrations/v1/people/search?country=USA&industry=technology&limit=5" \ -H "Authorization: Bearer YOUR_API_KEY" \ -H "Accept: application/json"
The response can include record ID, first name, last name, masked email, job title, seniority, company, company website, LinkedIn URL, industry, country, state, city, postal code, employee size, revenue and technology where those fields are available.
Unlock a person
POST /api/integrations/v1/people/unlock
{
"lead_id": 26515564
}
lead_id is required and must be a positive integer.
Unlocking uses the existing LastDatabase customer subscription,
suppression and verification workflow. Search itself should be used for
discovery before deciding which record to unlock.
Email Verification API
POST /api/integrations/v1/email/verify
The request accepts one required email value. It must be
a syntactically valid RFC email address and cannot exceed 254
characters.
curl -X POST \
"https://lastdatabase.com/api/integrations/v1/email/verify" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d '{
"email": "user@example.com"
}'
A successful response includes status,
type, the normalized identifier and the verification
result.
See the Email Verifier documentation for additional verification concepts and result interpretation.
Phone Verification API
POST /api/integrations/v1/phone/verify
| Field | Required | Rules |
|---|---|---|
phone |
Yes | String, maximum 64 characters. |
country |
No | Two-letter country code such as US or BD. |
idempotency_key |
Yes | Valid UUID. Reuse it only when retrying the same logical operation. |
curl -X POST \
"https://lastdatabase.com/api/integrations/v1/phone/verify" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d '{
"phone": "+8801712345678",
"country": "BD",
"idempotency_key": "550e8400-e29b-41d4-a716-446655440000"
}'
Phone Verification uses the same verification-credit system as the customer dashboard. The API controller does not independently debit a second set of credits.
HTTP 402 can be returned when verification credits are insufficient.
See the Phone Verifier documentation for additional guidance.
WhatsApp Number Verification API
POST /api/integrations/v1/whatsapp/verify
WhatsApp verification is a bulk asynchronous operation. Submit an array of phone numbers and a unique request UUID.
| Field | Required | Rules |
|---|---|---|
numbers |
Yes | Array of phone-number strings. Maximum 10,000 submitted values. |
request_uuid |
Yes | Valid UUID used for idempotent submission. |
The current customer price is $0.01 per billable number. The amount is reserved from the customer's LastDatabase messaging wallet when the job is created and finalized according to the verification workflow.
curl -X POST \
"https://lastdatabase.com/api/integrations/v1/whatsapp/verify" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d '{
"numbers": [
"+15550000001",
"+15550000002"
],
"request_uuid": "550e8400-e29b-41d4-a716-446655440001"
}'
Accepted response
Successful job creation returns HTTP 202 Accepted. The response includes the service, job ID, request UUID, job status, total numbers, billable numbers, price per number, total amount and creation timestamp.
{
"status": true,
"service": "whatsapp",
"job": {
"id": 123,
"request_uuid": "550e8400-e29b-41d4-a716-446655440001",
"status": "pending",
"total_numbers": 2001,
"billable_numbers": 2001,
"price_per_number_cents": 1,
"total_amount_cents": 2001,
"created_at": "2026-09-29T10:00:00+00:00"
}
}
See the WhatsApp Number Verifier documentation for the broader product workflow.
Telegram Number Verification API
POST /api/integrations/v1/telegram/verify
Telegram verification uses the same bulk submission contract and customer messaging wallet architecture as WhatsApp verification.
{
"numbers": [
"+15550000001",
"+15550000002"
],
"request_uuid": "550e8400-e29b-41d4-a716-446655440002"
}
The same maximum of 10,000 submitted values applies. The effective service minimum is 2,001 valid unique numbers per country, and each country group must satisfy that minimum independently.
Successful job creation returns HTTP 202 Accepted. Insufficient wallet balance can return HTTP 402.
See the Telegram Number Verifier documentation for additional product guidance.
Credits and Usage API
GET /api/integrations/v1/credits
Use this endpoint to inspect remaining lead-subscription records and the authenticated API key's current daily request usage.
curl -X GET \ "https://lastdatabase.com/api/integrations/v1/credits" \ -H "Authorization: Bearer YOUR_API_KEY" \ -H "Accept: application/json"
Response structure
{
"status": true,
"subscription": {
"remaining_records": 5000,
"has_available_records": true
},
"api": {
"daily_limit": 10000,
"used_today": 125,
"remaining_today": 9875
}
}
The values above illustrate the response shape. Your account returns its actual current allowance and API usage.
API Limits vs Product Billing
LastDatabase intentionally separates technical API request limits from commercial product usage.
| Resource | What it controls |
|---|---|
| API daily request limit | How many authenticated API requests an API key may make in a day. |
| Lead subscription records | Customer lead records available for consuming operations such as unlock. |
| Verification credits | Email and Phone Verification allowance. |
| Messaging wallet | Customer funds available for WhatsApp and Telegram verification. |
Current API plans
| Plan | Monthly Price | Daily Requests | Maximum API Keys |
|---|---|---|---|
| Free | $0 | 200 | 8 |
| Pro | $99 | 10,000 | 10 |
| Enterprise | $499 | 100,000 | 100 |
HTTP Status Codes and Errors
| Status | Meaning | Recommended handling |
|---|---|---|
| 200 | Request completed successfully. | Process the returned JSON response. |
| 202 | Bulk messaging-verification job accepted. | Store the job ID and treat the operation as asynchronous. |
| 401 | API token missing, invalid, disabled, or account cannot be resolved. | Check the Bearer token and API-key status. Do not repeatedly retry invalid credentials. |
| 402 | Insufficient product credits or messaging-wallet balance. | Check the relevant product allowance before retrying. |
| 422 | Validation failure or operation could not be completed. | Inspect the response and correct the request before retrying. |
| 429 | Daily API request limit exceeded. | Wait for the daily allowance to reset or use an appropriate API plan. |
| 500 | Unexpected server-side processing failure. | Do not create aggressive retry loops. Retry cautiously where the operation is idempotent. |
Idempotency and Safe Retries
Operations that can consume product allowance or create asynchronous jobs should be retried carefully.
Phone Verification
Supply a UUID in idempotency_key. When retrying the same
logical phone-verification operation, reuse the same key rather than
creating a new UUID for every network retry.
WhatsApp and Telegram
Supply a UUID in request_uuid. The messaging submission
service uses the request UUID as part of its idempotency workflow.
Reuse the same UUID when retrying the same logical submission.
Code Examples
cURL
curl -X GET \ "https://lastdatabase.com/api/integrations/v1/people/search?country=USA&limit=5" \ -H "Authorization: Bearer YOUR_API_KEY" \ -H "Accept: application/json"
PHP
$apiKey = getenv('LASTDATABASE_API_KEY');
$ch = curl_init(
'https://lastdatabase.com/api/integrations/v1/people/search'
. '?country=USA&limit=5'
);
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => [
'Authorization: Bearer ' . $apiKey,
'Accept: application/json',
],
]);
$response = curl_exec($ch);
curl_close($ch);
$data = json_decode($response, true);
Python
import os
import requests
api_key = os.environ["LASTDATABASE_API_KEY"]
response = requests.get(
"https://lastdatabase.com/api/integrations/v1/people/search",
params={
"country": "USA",
"limit": 5,
},
headers={
"Authorization": f"Bearer {api_key}",
"Accept": "application/json",
},
timeout=30,
)
response.raise_for_status()
data = response.json()
Node.js
const apiKey = process.env.LASTDATABASE_API_KEY;
const url = new URL(
"https://lastdatabase.com/api/integrations/v1/people/search"
);
url.searchParams.set("country", "USA");
url.searchParams.set("limit", "5");
const response = await fetch(url, {
headers: {
Authorization: `Bearer ${apiKey}`,
Accept: "application/json"
}
});
const data = await response.json();
Security and Production Practices
- Store API keys only in server-side secrets or environment variables.
- Never commit API keys to Git repositories.
- Never expose API keys in browser-side JavaScript.
- Never include real API keys in screenshots, tickets or public documentation.
- Use HTTPS for every production API request.
- Disable credentials that are no longer required.
- Use separate API keys for independent applications when operational separation is useful.
- Validate HTTP status codes before processing response bodies.
- Use idempotency identifiers for operations that require them.
Review the Authentication guide, Compliance, Privacy Policy and Terms before deploying production integrations.
Run the LastDatabase API in Postman
Explore the official LastDatabase API collection in Postman. Use Postman to test authentication, parameters and supported API requests before integrating them into your application.