Datasets API endpoint
Finds crawled job postings within `radius_km` of a `lat`/`lon`, nearest first. Only geocoded postings participate (the geo-enrich worker back-fills coordinates from each posting's location). Open roles only by default. provider enum: `greenhouse`, `lever`, `ashby`, `workday`, `smartrecruiters`, `workable`, `recruitee`, `rippling`, `personio`, `teamtailor`, `oracle`, `ukg`, `icims`, `eightfold`, `gem`, `pinpoint`, `amazon-jobs`, `apple-jobs`, `google-jobs`, `meta-jobs`, `tesla-jobs`. Billing: this endpoint costs 1 credit per 10 records returned, rounded up, with a minimum of 1 (up to 10 records cost 1, a full page of 100 costs 10).
/datasets/jobs/nearbyQuery parameters:
lat (required, number) — latitude, -90..90.lon (required, number) — longitude, -180..180.radius_km (number) — search radius in km, default 50, max 500.provider — provider filter. Enum: greenhouse, lever, ashby, workday, smartrecruiters, workable, recruitee, rippling, personio, teamtailor, oracle, ukg, icims, eightfold, gem, pinpoint, amazon-jobs, apple-jobs, google-jobs, meta-jobs, tesla-jobs.include_closed (bool) — include closed/filled roles (default false = open only).page, page_size — 1-based; page_size default 20, max 100.Returns total, page, page_size, and jobs[] (postings, nearest first).
1 credit per 10 records returned, rounded up, minimum 1. A call that returns up to 10 records costs 1 credit, 20 records cost 2, a full page of 100 costs 10, and an empty result costs 1. You are charged for what comes back, not for the page_size you ask for, but your balance must cover the requested page_size for the call to be accepted. The response header x-credit-cost shows what a call was charged.
| Field | Filled in, of 20 checked | Values in the sample |
|---|---|---|
| ai_tools_extractor_version | 20 | |
| ai_tools_mentioned | 2 | median 1 entry |
| apply_url | 20 | jobs.ashbyhq.com |
| benefits_mentioned | 2 | median 1 entry |
| board_id | 20 | |
| company | 20 | |
| compensation | 19 | |
| compensation_currency | 19 | |
| compensation_max | 19 | 175 to 325,000, median 160,000 |
| compensation_min | 19 | 150 to 250,000, median 130,000 |
| department | 20 | |
| description_html | 20 | median 6,594 characters |
| description_text | 20 | median 5,026 characters |
| education_level_required | 1 | median 1 entry |
| employment_type | 20 | |
| first_seen | 20 | 2026-07-20 to 2026-10-08 |
| id | 20 | |
| is_open | 20 | true in 20 of 20 |
| isco_code | 1 | |
| job_family | 1 | |
| job_family_code | 1 | |
| last_seen | 20 | 2026-08-15 to 2026-10-10 |
| last_seen_ms | 20 | 1,786,768,544,203 to 1,791,601,623,201, median 1,790,054,112,584 |
| location | 20 | |
| location_city | 20 | |
| location_country | 20 | |
| location_geo | 20 | |
| location_state | 20 | |
| occupation_confidence | 1 | 0.99 |
| occupation_extractor_version | 20 | |
| occupation_id | 1 | |
| occupation_label | 1 | |
| posted_at | 20 | 2025-07-07 to 2026-10-07 |
| posting_id | 20 | |
| provider | 20 | |
| requirements_extractor_version | 20 | |
| security_clearance_required | 0 | |
| seniority_extractor_version | 20 | |
| seniority_level | 20 | |
| skills_extractor_version | 20 |
| Parameter | Type | Required | Default | Description | Example |
|---|---|---|---|---|---|
| lat | number | Yes | Latitude, -90..90 | 40.7484257 | |
| lon | number | Yes | Longitude, -180..180 | -73.98567 | |
| radius_km | number | No | Search radius in km, default 50, max 500 | ||
| provider | string | No | Provider filter Allowed values: greenhouse, lever, ashby, workday, smartrecruiters, workable, recruitee, rippling, personio, teamtailor, oracle, ukg, icims, eightfold, gem, pinpoint, amazon-jobs, apple-jobs, google-jobs, meta-jobs, tesla-jobs. | ||
| include_closed | boolean | No | Include closed/filled roles (default false) | ||
| page | integer | No | Page number, default 1 | ||
| page_size | integer | No | Page size, default 20, max 100 | ||
| x-api-key (header) | string | Yes | API key required |
curl -X GET "https://api.crawlora.net/api/v1/datasets/jobs/nearby?lat=40.7484257&lon=-73.98567&provider=greenhouse&include_closed=true&page=1" \ -H "x-api-key: $CRAWLORA_API_KEY"
{
"code": 200,
"msg": "OK",
"data": {
"total": 1,
"page": 1,
"page_size": 20,
"jobs": [
{
"posting_id": "greenhouse:ab12cd:9f0e",
"provider": "greenhouse",
"company": "Stripe",
"title": "Staff Engineer",
"location": "San Francisco, CA",
"remote": false,
"posted_at": "2026-07-01T00:00:00Z"
}
]
}
}Request schema
No body schema
Response schema
#/definitions/datasets.jobsSearchResponseDoc
| Field | Type | Required | Enum | Bounds | Example | Description |
|---|---|---|---|---|---|---|
| code | integer | No | 200 | |||
| data | datasets.JobsSearchResponse | No | ||||
| data.jobs | array | No | Matching job postings on this page. | |||
| data.page | integer | No | Page number returned. | |||
| data.page_size | integer | No | Number of items per page. | |||
| data.total | integer | No | Total number of postings matching the filters. | |||
| msg | string | No | OK |
| Status | Description | Schema |
|---|---|---|
| 400 | Bad Request | #/definitions/app.Response |
| 500 | Internal Server Error | #/definitions/app.Response |
Use environment variables for secrets and keep Crawlora API keys server-side.
curl -X GET "https://api.crawlora.net/api/v1/datasets/jobs/nearby?lat=40.7484257&lon=-73.98567&provider=greenhouse&include_closed=true&page=1" \
-H "x-api-key: $CRAWLORA_API_KEY"