Skip to main content
POST
https://api.gtmapis.com
/
v1
/
find
Find Email
curl --request POST \
  --url https://api.gtmapis.com/v1/find \
  --header 'Content-Type: application/json' \
  --header 'X-API-Key: <api-key>' \
  --data '
{
  "first_name": "<string>",
  "last_name": "<string>",
  "domain": "<string>",
  "company": "<string>",
  "linkedin_url": "<string>"
}
'
{
  "id": "<string>",
  "email": "<string>",
  "confidence": 123,
  "source_provider": "<string>",
  "providers_tried": [
    {}
  ],
  "pattern": "<string>",
  "not_found": true,
  "credits_charged": 123,
  "latency_ms": 123
}

Find Email

Discover professional email addresses using first name, last name, and company information. Uses a waterfall strategy across multiple providers (Prospeo, LeadMagic, People Data Labs, Datagma) to maximize coverage.

Endpoint

POST /v1/find

Request

first_name
string
required
The person’s first name
last_name
string
required
The person’s last name
domain
string
Company domain (e.g., “acme.com”). Either domain or company is required.
company
string
Company name. Either domain or company is required.
linkedin_url
string
LinkedIn profile URL for higher accuracy

Example Request

curl -X POST https://api.gtmapis.com/v1/find \
  -H "Content-Type: application/json" \
  -H "X-API-Key: gtm_test_your_key_here" \
  -d '{
    "first_name": "John",
    "last_name": "Doe",
    "domain": "acme.com"
  }'

Response

id
string
Unique identifier for this request
email
string
The found email address. Empty if not found.
confidence
number
Confidence score from 0-100. Higher is better.
  • >= 90: Very high confidence (verified)
  • 70-89: High confidence (pattern match + domain verified)
  • 50-69: Medium confidence (pattern match only)
  • < 50: Low confidence (guess)
source_provider
string
Which provider returned the result: prospeo, leadmagic, peopledatalabs, or datagma
providers_tried
array
List of all providers that were queried in the waterfall
pattern
string
The email pattern detected (e.g., {first}.{last}, {f}{last})
not_found
boolean
true if email could not be found
credits_charged
integer
Number of credits charged. 1 credit if email found, 0 credits if not found.
latency_ms
integer
Total request time in milliseconds

Success Response

{
  "id": "550e8400-e29b-41d4-a716-446655440000",
  "email": "john.doe@acme.com",
  "confidence": 95,
  "source_provider": "prospeo",
  "providers_tried": ["prospeo"],
  "pattern": "{first}.{last}",
  "not_found": false,
  "credits_charged": 1,
  "latency_ms": 342,
  "timestamp": "2026-01-25T12:00:00Z"
}

Not Found Response

{
  "id": "550e8400-e29b-41d4-a716-446655440001",
  "email": "",
  "confidence": 0,
  "source_provider": "",
  "providers_tried": ["prospeo", "leadmagic", "peopledatalabs", "datagma"],
  "not_found": true,
  "credits_charged": 0,
  "latency_ms": 2156,
  "timestamp": "2026-01-25T12:00:00Z"
}

Credit Pricing

ResultCredits Charged
Email found (confidence >= 70%)1 credit
Email found (confidence < 70%)0 credits
Email not found0 credits
Error / failure0 credits
You only pay for high-confidence results. Low-confidence matches and failed lookups are free.

Error Responses

400 Bad Request

{
  "error": "Bad Request",
  "message": "first_name and last_name are required"
}

401 Unauthorized

{
  "error": "Unauthorized",
  "message": "Invalid API key"
}

429 Too Many Requests

{
  "error": "Rate limit exceeded",
  "message": "You have exceeded the rate limit of 10000 requests per minute",
  "retry_after": 60
}

Best Practices

Using domain instead of company gives more accurate results since domains are unique.
If you have the person’s LinkedIn URL, include it to improve confidence scores.
Results with confidence < 70% are returned but not charged. Use them with caution.
For 2+ contacts, use Bulk Find for better throughput.