Datasets API endpoint
Returns stored Apple Maps places within a radius of a point, nearest first, from dataset id `apple-maps-places`. lat, lon and radius_m are required. Unlike the live apple-maps-search endpoint (which returns at most 25 places per call), this pages through the stored directory with `distance_m` on every item. Coverage is observed, not complete. Does not trigger live scraping. Billing: this endpoint costs 1 credit per record returned, with a minimum of 2 (an empty result costs 2, a full page of 100 costs 100).
/datasets/apple-maps-places/nearbySearches Apple Maps place records stored in a search index near a coordinate, nearest first. Unlike the live apple-maps-search endpoint, which returns at most 25 places per call, this pages through the stored directory. Coverage is observed, not complete.
Dataset id enum:
apple-maps-placesQuery parameters:
lat: required latitude.lon: required longitude.radius_m: required radius in meters, from 1 through 50000.category: optional exact Apple category name, max 128 characters. Use facet=category to discover exact values.min_rating: optional minimum rating from 0 through 5. Unrated places are returned with rating null, so any min_rating above 0 excludes them.min_rating_count: optional minimum number of ratings behind the rating, 0 or greater.page: optional page number, defaults to 1.page_size: optional page size, defaults to 20 and maxes at 100.Response behavior:
distance_asc.distance_m on items.null rating means Apple shows no rating for the place (never a zero-star score).10000; page * page_size must not exceed 10000.1 credit per record returned, minimum 2. A call that returns 20 records costs 20 credits, a full page of 100 costs 100, and an empty or one-record result costs 2. 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 | In the sample | Value in the sample |
|---|---|---|
| dataset | Has a value | |
| items | Empty | |
| page | Has a value | |
| page_size | Has a value | |
| total | Has a value | 0 |
| sort | Has a value |
| Parameter | Type | Required | Default | Description | Example |
|---|---|---|---|---|---|
| lat | number | Yes | Center latitude, from -90 through 90 | 37.7749 | |
| lon | number | Yes | Center longitude, from -180 through 180 | -122.4194 | |
| radius_m | integer | Yes | Search radius in meters, 1 through 50000 | 5000 | |
| category | string | No | Exact Apple category name | ||
| min_rating | number | No | Minimum rating, from 0 through 5 | ||
| min_rating_count | integer | No | Minimum number of ratings behind the rating | ||
| page | integer | No | 1 | Page number, defaults to 1 | |
| page_size | integer | No | 20 and maxes at 100 | Page size, defaults to 20 and maxes at 100 | |
| x-api-key (header) | string | Yes | API key required |
curl -X GET "https://api.crawlora.net/api/v1/datasets/apple-maps-places/nearby?lat=37.7749&lon=-122.4194&radius_m=5000&page=1" \ -H "x-api-key: $CRAWLORA_API_KEY"
{
"code": 200,
"msg": "OK",
"data": {
"dataset": "apple-maps-places",
"items": [
{
"id": "6435622567484707146",
"name": "Sightglass Coffee",
"distance_m": 120.4
}
],
"page": 1,
"page_size": 20,
"total": 1,
"sort": "distance_asc"
}
}Request schema
No body schema
Response schema
#/definitions/datasets.applePlacesSearchResponseDoc
| Field | Type | Required | Enum | Bounds | Example | Description |
|---|---|---|---|---|---|---|
| code | integer | No | 200 | |||
| data | datasets.ApplePlaceSearchResponse | No | ||||
| data.dataset | string | No | ||||
| data.items | array | No | ||||
| data.items[].address | string | No | ||||
| data.items[].alt_phones | array | No | ||||
| data.items[].catalog_country | string | No | ||||
| data.items[].categories | array | No | ||||
| data.items[].category | string | No | Category is the deepest named Apple category; Categories is the whole taxonomy path (names) and CategoryIDs the matching Apple category ids. | |||
| data.items[].category_ids | array | No | ||||
| data.items[].city | string | No | ||||
| data.items[].country | string | No | ||||
| data.items[].country_code | string | No | ||||
| data.items[].county | string | No | ||||
| data.items[].crawled_at | string | No | ||||
| data.items[].discovery_keyword | string | No | ||||
| data.items[].distance_m | number | No | ||||
| data.items[].first_seen_at | string | No | ||||
| data.items[].hours | array | No | ||||
| data.items[].hours[].close | string | No | ||||
| data.items[].hours[].day | string | No | ||||
| data.items[].hours[].open | string | No | ||||
| data.items[].hours_type | string | No | ||||
| data.items[].id | string | No | ||||
| data.items[].last_seen_at | string | No | ||||
| data.items[].latitude | number | No | ||||
| data.items[].location | object | No | Location is a geo_point for radius search and distance sort. | |||
| data.items[].location.lat | number | No | Latitude in decimal degrees. | |||
| data.items[].location.lon | number | No | Longitude in decimal degrees. | |||
| data.items[].longitude | number | No | ||||
| data.items[].name | string | No | ||||
| data.items[].neighborhood | string | No | ||||
| data.items[].phone | string | No | ||||
| data.items[].photo_url | string | No | ||||
| data.items[].place_id | string | No | ||||
| data.items[].postal_code | string | No | ||||
| data.items[].price_level | integer | No | ||||
| data.items[].price_symbol | string | No | ||||
| data.items[].rating | number | No | ||||
| data.items[].rating_count | integer | No | ||||
| data.items[].rating_max | integer | No | ||||
| data.items[].schema_version | integer | No | ||||
| data.items[].state | string | No | ||||
| data.items[].state_code | string | No | ||||
| data.items[].street | string | No | ||||
| data.items[].type | string | No | ||||
| data.items[].url | string | No | ||||
| data.items[].website | string | No | ||||
| data.page | integer | No | ||||
| data.page_size | integer | No | ||||
| data.sort | string | No | ||||
| data.total | integer | No | ||||
| msg | string | No | OK |
| Status | Description | Schema |
|---|---|---|
| 400 | Bad Request | #/definitions/app.Response |
| 429 | Too Many Requests | #/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/apple-maps-places/nearby?lat=37.7749&lon=-122.4194&radius_m=5000&page=1" \
-H "x-api-key: $CRAWLORA_API_KEY"