API Reference
The GTMAPIs REST API provides B2B data enrichment including email validation, email finder, LinkedIn company data, and people lookup.Base URL
Authentication
All API requests require an API key in theX-API-Key header:
Available Endpoints
Email Validation
Single Validation
POST /v1/validateValidate a single email address with B2B quality scoringBulk Validation
POST /v1/validate/bulkValidate up to 100 emails at onceEmail Finder
Find Email
POST /v1/findFind professional email from name + companyBulk Find
POST /v1/find/bulkFind emails for up to 100 contactsLinkedIn Company Data
Company Profile
POST /v1/linkedin/companyGet company details, size, funding, locationsEmployee Data
POST /v1/linkedin/employees/countEmployee count and growth metricsRecent Hires
POST /v1/linkedin/hiresWho they hired recently (sales signal)Job Postings
POST /v1/linkedin/jobsCurrent open positionsPeople Data
Person Lookup
POST /v1/people/lookupFind LinkedIn profile from name + companyRole Lookup
POST /v1/people/roleFind person by job role at a companyEmail to LinkedIn
POST /v1/people/email-to-linkedinConvert work email to LinkedIn URLMobile Finder
POST /v1/mobile/findFind mobile phone numbersProfile Enrichment
POST /v1/profile/enrichGet full profile from email or LinkedInEmployee Search
POST /v1/people/searchSearch employees with filtersProspecting
Prospect Account
GET /v1/prospect/accountCheck account status and remaining creditsICP Search
POST /v1/prospect/icpFind people matching your ICP at a companyEmployee Search
POST /v1/prospect/employeesSearch employees with job-level and function filtersEmail from LinkedIn
POST /v1/prospect/emailGet email from a LinkedIn profilePhone from LinkedIn
POST /v1/prospect/phoneGet phone from a LinkedIn profileEmail to Person
POST /v1/prospect/email-to-personReverse lookup person from emailPhone to Person
POST /v1/prospect/phone-to-personReverse lookup person from phoneCompany Data
Company Search
POST /v1/company/searchSearch companies by industry, size, location, techCompany Enrich (LinkedIn)
POST /v1/company/enrich-linkedinGet firmographic data from LinkedIn URLDomain to LinkedIn
POST /v1/company/domain-to-linkedinFind company LinkedIn from domainLinkedIn to Domain
POST /v1/company/linkedin-to-domainFind company domain from LinkedInCompany Enrichment
POST /v1/company/enrichGet firmographic data for any companyBulk Enrichment
POST /v1/company/enrich/bulkEnrich up to 25 companies at onceSubscriptions & Billing
Create Subscription
POST /v1/subscriptions/createStart a new Stripe subscriptionGet Current Subscription
GET /v1/subscriptions/currentCheck subscription status and creditsCancel Subscription
POST /v1/subscriptions/cancelCancel at end of billing periodReactivate Subscription
POST /v1/subscriptions/reactivateUndo cancellation before period endsMonitoring
Health Checks
GET /health, /ready, /liveMonitor API health and readinessRate Limits
- Limit: 1000 requests per minute per API key
- Bulk limit: 100 emails per request
- Response header:
X-RateLimit-Remaining
Request Format
All requests must include: Headers:Content-Type: application/jsonX-API-Key: gtm_test_your_key_here
Response Format
All successful responses return HTTP 200 with JSON:Error Responses
400 Bad Request
Invalid request format or missing required fields:401 Unauthorized
Missing or invalid API key:429 Too Many Requests
Rate limit exceeded:500 Internal Server Error
Unexpected server error:Response Fields
| Field | Type | Description |
|---|---|---|
email | string | The validated email address |
result | string | One of: valid, valid_role_based, risky, invalid, unknown |
reason | string | Human-readable explanation of the result |
is_role_based | boolean | Whether the email is a generic business inbox |
is_free_provider | boolean | Whether the domain is a free email provider (Gmail, Yahoo, etc.) |
is_catch_all | boolean | Whether the domain accepts all emails |
catch_all_confidence | string | Confidence level: high, medium, or low (only if catch-all) |
b2b_outbound_quality | string | B2B value: high, low, or none |
credits_charged | integer | Credits charged (0 or 1) |
charge_reason | string | Explanation of credit charge |
validation_layer | string | Layer where validation stopped: syntax, dns, smtp, catchall |
smtp_response | string | Raw SMTP server response (if applicable) |
Client Libraries
JavaScript/TypeScript
Python
Go
Next Steps
Validate Single Email
Learn how to validate one email at a time
Validate Bulk Emails
Process up to 100 emails per request