API Documentation

Everything you need to integrate with DataLookup

Authentication

All API requests require authentication via an API key. You can pass your API key using either method:

Header Authentication (Recommended)

# Include the X-API-Key header curl -H "X-API-Key: your_api_key" https://datalookup.org/v1/email/test@example.com

Query Parameter Authentication

# Pass api_key as a query parameter curl "https://datalookup.org/v1/email/test@example.com?api_key=your_api_key"
Getting Your API Key

API keys are generated from your dashboard. Each account can have up to 25 active API keys.

Rate Limits

The following rate limits apply to authenticated API requests:

50,000 requests/second per key 5,000,000 queries/day per account 100 emails per bulk request
Limit Type Value Scope
Requests per second 50,000 Per API key
Daily query limit 5,000,000 Per account (all keys combined)
Bulk request size 100 Per request
Max results per query 100 Per email lookup
Daily Limit Counting

The daily limit counts queries made, not results returned. A bulk request with 50 emails counts as 50 queries regardless of results. Limits reset at midnight UTC.

Endpoints

GET /v1/email/{email}

Look up contact records for a single email address.

Parameters

Parameter Type Required Description
email string Yes Email address to look up (URL path or query param)

Example Request

curl -H "X-API-Key: your_key" https://datalookup.org/v1/email/john@example.com

Alternative (Query Parameter)

curl -H "X-API-Key: your_key" "https://datalookup.org/v1/email?email=john@example.com"
POST /v1/bulk

Look up contact records for multiple email addresses in a single request (max 100).

Request Body

Field Type Required Description
emails array Yes Array of email addresses (max 100)

Example Request

curl -X POST \ -H "X-API-Key: your_key" \ -H "Content-Type: application/json" \ -d '{"emails": ["john@example.com", "jane@example.com"]}' \ https://datalookup.org/v1/bulk

Example Response

{ "success": true, "results": { "john@example.com": [ { "name": "JOHN DOE", "email": "JOHN@EXAMPLE.COM", "phone1": "5551234567", "phone2": "", "address": "123 MAIN ST, NEW YORK NY 10001", "country": "USA" } ], "jane@example.com": [] }, "count": 1 }
GET /api/health

Get current API status including free mode availability and usage stats. No authentication required.

Example Response (Free Mode)

{ "success": true, "free_mode": true, "searches_today": 1250000, "searches_limit": 100000000, "searches_remaining": 98750000, "reset_in_seconds": 43200 }

Response Format

All responses are returned as JSON. Successful responses include a success: true field.

Single Lookup Response

{ "success": true, "count": 2, "results": [ { "name": "JOHN DOE", "email": "JOHN@EXAMPLE.COM", "phone1": "5551234567", "phone2": "5559876543", "address": "123 MAIN ST, NEW YORK NY 10001", "country": "USA" } ] }

Response Fields

Field Type Description
name string Contact name (uppercase)
email string Email address (uppercase)
phone1 string Primary phone number (digits only)
phone2 string Secondary phone/fax (digits only)
address string Full address (uppercase)
country string Data source country
Data Format

All text fields are returned in uppercase. Phone numbers contain digits only (no formatting). Empty fields are returned as empty strings.

Error Handling

Errors are returned with success: false and an error message.

{ "success": false, "error": "Invalid API key" }

Error Codes

HTTP Status Error Description
400 Invalid email format The email address is malformed or contains invalid characters
401 Invalid API key The API key is missing, invalid, or expired
403 Account suspended Your account has been suspended
429 Rate limit exceeded Too many requests - slow down
429 Daily query limit exceeded You've reached your daily quota
500 Internal server error Something went wrong on our end

Code Examples

Single Lookup

curl -H "X-API-Key: your_api_key" \ https://datalookup.org/v1/email/test@example.com

Bulk Lookup

curl -X POST \ -H "X-API-Key: your_api_key" \ -H "Content-Type: application/json" \ -d '{"emails": ["email1@example.com", "email2@example.com"]}' \ https://datalookup.org/v1/bulk

Single Lookup

import requests API_KEY = "your_api_key" email = "test@example.com" response = requests.get( f"https://datalookup.org/v1/email/{email}", headers={"X-API-Key": API_KEY} ) data = response.json() if data["success"]: for result in data["results"]: print(f"{result['name']}: {result['phone1']}")

Bulk Lookup

import requests API_KEY = "your_api_key" emails = ["email1@example.com", "email2@example.com"] response = requests.post( "https://datalookup.org/v1/bulk", headers={"X-API-Key": API_KEY}, json={"emails": emails} ) data = response.json() if data["success"]: for email, results in data["results"].items(): print(f"{email}: {len(results)} results")

Single Lookup

const API_KEY = 'your_api_key'; const email = 'test@example.com'; const response = await fetch( `https://datalookup.org/v1/email/${email}`, { headers: { 'X-API-Key': API_KEY } } ); const data = await response.json(); if (data.success) { data.results.forEach(r => console.log(`${r.name}: ${r.phone1}`)); }

Bulk Lookup

const API_KEY = 'your_api_key'; const emails = ['email1@example.com', 'email2@example.com']; const response = await fetch('https://datalookup.org/v1/bulk', { method: 'POST', headers: { 'X-API-Key': API_KEY, 'Content-Type': 'application/json' }, body: JSON.stringify({ emails }) }); const data = await response.json(); console.log(data);

Single Lookup

package main import ( "encoding/json" "fmt" "net/http" ) func main() { client := &http.Client{} req, _ := http.NewRequest("GET", "https://datalookup.org/v1/email/test@example.com", nil) req.Header.Set("X-API-Key", "your_api_key") resp, _ := client.Do(req) defer resp.Body.Close() var data map[string]interface{} json.NewDecoder(resp.Body).Decode(&data) fmt.Println(data) }

Free Access Mode

When free access mode is enabled, the API can be used without authentication. This mode has different rate limits.

Check API Status

Use the /api/health endpoint to check if free mode is currently enabled and see remaining daily searches.

Free Mode Limits

Limit Type Value Scope
Daily queries 100,000,000 Global (all users combined)
Requests per second 50,000 Per IP address
Bulk request size 100 Per request
Query Counting

Each email lookup counts as 1 query. A bulk request with 50 emails counts as 50 queries toward the daily limit, regardless of how many results are returned.

Usage in Free Mode

When free mode is enabled, you can make requests without an API key:

# No API key needed in free mode curl https://datalookup.org/v1/email/test@example.com
Free Mode Availability

Free mode may be enabled or disabled by administrators at any time. Always check the /api/health endpoint or look for the banner on the homepage.