The GeoLayer API is organized around REST. Our API has predictable resource-oriented URLs, accepts JSON-encoded request bodies, returns JSON-encoded responses, and uses standard HTTP response codes.
The GeoLayer API uses API keys to authenticate requests. You can view and manage your API keys in the GeoLayer Dashboard.
Rate limits are applied based on your subscription tier. If you exceed the rate limit, the API will return a 429 Too Many Requests error.
| Tier | Burst Limit | Daily Limit |
|---|---|---|
| Startup | 10 req/sec | 5,000 req/day |
| Growth | 50 req/sec | 25,000 req/day |
GeoLayer uses conventional HTTP response codes to indicate the success or failure of an API request.
Receive real-time notifications when your search tasks are complete. Set your Webhook URL in the Account Settings.
{
"event": "task.completed",
"submission_id": "job_12345",
"total_leads": 10
}
/v1/tasks/submit
Initializes a new search job. This endpoint returns a submission_id immediately. Use this ID to poll for results.
Note: Upto 20 new leads are returned per task. Make sure you have Credits available.
| keyword | "Plumbers" | The business niche. |
| city | "Austin" | The target location. |
/v1/tasks/results/{submission_id}
Retrieves the collected data once the task is complete. If the task is still running, the status will return as "processing".
/v1/get-user-data
Retrieves your profile and account data.
curl -X POST "https://geolayer.io/v1/tasks/submit" \
-d '{
"keyword": "Plumbers",
"city": "San Jose"
}'
// Response
{
"submission_id": "job_8291x_q",
"status": "queued"
}
curl -X GET "https://geolayer.io/v1/tasks/results/job_8291x_q"
// Response
{
"status": "completed",
"data": [
{
"first_name": "John",
"last_name": "Smith",
"email": "info@draindoc.com",
"phone": "+1-408-555-1234",
"company_name": "Drain Doctor",
"title": "Owner",
"website": "https://www.draindoc.com",
"address": "1234 Elm Street",
"city": "San Jose",
"state": "CA",
"country_code": "US",
"verified": true
}
]
}
curl -X GET "https://geolayer.io/v1/get-user-data"
// Response
{
"full_name": "Tom Harrison",
"email": "tom.harrisson75@gmail.com",
"credits_remaining": 1000,
"plan_name": "Growth"
}