Apple Maps API endpoint
Returns places in one browse category near a coordinate without a keyword, in the same shape as the search endpoint (place summaries, region, relocation flag, and the refinement filters block). The category is a name from the categories endpoint for the same area (case-insensitive) or its key; an unknown name returns 400 listing the categories available there. Filters and sort work exactly as on the search endpoint.
/apple-maps/category-searchQuery parameters:
category (required) — a category name from /apple-maps/categories for the same area (case-insensitive, e.g. Coffee Shops, Restaurants, Gas Stations) or its key. A name that is not offered for that area returns a 400 listing the categories available there. Resolving a name costs one extra upstream call; passing the key does not.latitude (required) — search center latitude, e.g. 37.7749.longitude (required) — search center longitude, e.g. -122.4194.span (optional) — search viewport size in degrees around the center. Defaults to 0.05; minimum 0.001, maximum 5.limit (optional) — max places returned. Defaults to 25, maximum 100.lang (optional) — display language as a BCP 47 tag. Defaults to en-US.country (optional) — two-letter ISO 3166-1 code. Defaults to US.filters (optional) — comma-separated filter keys from the filters block of an unfiltered category search for the same category and area (e.g. OPEN_NOW, TOP_RATED, price bands, chains, amenities). Unknown keys return a 400 listing the available keys. Costs a second upstream call.sort (optional) — best_match (default), distance, or ratings. Costs a second upstream call.The response is identical to /apple-maps/search: query (the resolved category name), total_found, total_results, region, relocated, filters[], and places[]. See that endpoint's documentation for the field list.
| Field | Filled in, of 25 checked | Values in the sample |
|---|---|---|
| id | 25 | |
| place_id | 25 | |
| url | 25 | maps.apple.com |
| name | 25 | “Sightglass Coffee” and 22 other values |
| type | 25 | BUSINESS in all 25 |
| category | 25 | Coffee Shop (19), Coffee Roastery (2), Cafe (1) and 3 more |
| categories | 25 | median 5 entries |
| latitude | 25 | |
| longitude | 25 | |
| address | 25 | |
| address_info | 25 | |
| phone | 24 | |
| alt_phones | 9 | median 1 entry |
| website | 24 | sightglasscoffee.com and 21 other hosts |
| hours_type | 25 | NORMAL in all 25 |
| hours | 25 | median 7 entries |
| photo_url | 25 | ir.4sqi.net and 2 other hosts |
| rating | 13 | 3.3 to 4.63, median 4.3 |
| rating_max | 13 | 5 |
| rating_count | 13 | 18 to 2,258, median 119 |
| price_level | 5 | 1 to 2, median 2 |
| price_max | 5 | 4 |
| price_symbol | 5 | $ in all 5 |
| Parameter | Type | Required | Default | Description | Example |
|---|---|---|---|---|---|
| category | string | Yes | Category name (e.g. Coffee Shops, Restaurants) or key from /apple-maps/categories for the same area | Coffee Shops | |
| latitude | number | Yes | Search center latitude | 37.7749 | |
| longitude | number | Yes | Search center longitude | -122.4194 | |
| span | number | No | 0 | Search viewport size in degrees around the center. Defaults to 0.05; minimum 0.001, maximum 5. | 0.05 |
| limit | integer | No | 25 | Max places returned. Defaults to 25, maximum 100. | 25 |
| lang | string | No | en-US | Display language as a BCP 47 tag. Defaults to en-US. | en-US |
| country | string | No | US | Two-letter ISO 3166-1 country code. Defaults to US. | US |
| filters | string | No | Comma-separated filter keys from the filters block of an unfiltered category search for the same category and area. Unknown keys return 400 listing the available keys. Costs a second upstream call. | OPEN_NOW | |
| sort | string | No | Result order. Costs a second upstream call. Allowed values: best_match, distance, ratings. | ratings | |
| x-api-key (header) | string | Yes | API key required |
curl -X GET "https://api.crawlora.net/api/v1/apple-maps/category-search?category=Coffee+Shops&latitude=37.7749&longitude=-122.4194&limit=10&lang=en&country=us&sort=best_match" \ -H "x-api-key: $CRAWLORA_API_KEY"
{
"code": 200,
"msg": "OK",
"data": {
"query": "Fast Food",
"total_found": 25,
"total_results": 1,
"region": {
"south": 37.7499,
"west": -122.4494,
"north": 37.7999,
"east": -122.3894
},
"relocated": false,
"filters": [
{
"name": "Open Now",
"type": "toggle",
"options": [
{
"key": "OPEN_NOW",
"name": "Open Now",
"selected": false
}
]
},
{
"name": "All Chains",
"type": "multi_select",
"match": "any",
"options": [
{
"key": "chain_in_n_out",
"name": "In-N-Out Burger",
"selected": false
}
]
}
],
"places": [
{
"id": "16345243216502689102",
"place_id": "I0B1C2D3E4F5A6B7C",
"url": "https://maps.apple.com/place?place-id=I0B1C2D3E4F5A6B7C",
"name": "Super Duper Burgers",
"type": "BUSINESS",
"category": "Burger Restaurant",
"latitude": 37.7848,
"longitude": -122.4076,
"address": "721 Market St, San Francisco, CA 94103, United States",
"rating": 4.2,
"rating_max": 5,
"rating_count": 2107,
"price_level": 2,
"price_max": 4,
"price_symbol": "$"
}
]
}
}Request schema
No body schema
Response schema
#/definitions/applemaps.searchResponseDoc
| Field | Type | Required | Enum | Bounds | Example | Description |
|---|---|---|---|---|---|---|
| code | integer | No | Code is the HTTP status code or a custom code used to indicate the result of the request @example 200 | |||
| data | applemaps.SearchResponse | No | ||||
| data.filters | array | No | FilterGroup record, 7 fields: match, name, options, type. Described under Apple Maps Search API. | |||
| data.guides | array | No | GuideSummary record, 15 fields: description, id, item_total, last_modified, photo_url, publisher, source_url, title, url. Described under Apple Maps Guides API. | |||
| data.places | array | No | Place record, 38 fields: address, address_info, alt_phones, categories, category, hours, hours_type, id, latitude, longitude, name, phone and 11 more. Described under Apple Maps Search API. | |||
| data.query | string | No | ||||
| data.region | applemaps.Region | No | Region record, 4 fields: east, north, south, west. Described under Apple Maps Search API. | |||
| data.relocated | boolean | No | ||||
| data.total_found | integer | No | ||||
| data.total_results | integer | No | ||||
| msg | unknown | No | Msg is the message that describes the result of the request @example "Request successful" |
| Status | Description | Schema |
|---|---|---|
| 400 | Bad Request | #/definitions/app.Response |
| 503 | Service Unavailable | #/definitions/app.Response |
Use environment variables for secrets and keep Crawlora API keys server-side.
curl -X GET "https://api.crawlora.net/api/v1/apple-maps/category-search?category=Coffee+Shops&latitude=37.7749&longitude=-122.4194&limit=10&lang=en&country=us&sort=best_match" \
-H "x-api-key: $CRAWLORA_API_KEY"