Whataburger API endpoint
Returns one Whataburger store: postal address, coordinates, phone, published week of opening hours, the restaurant services (curbside, delivery) Whataburger lists for it, and a per-channel hours breakdown (dine-in, drive-thru, curbside, delivery) where the channel's hours genuinely differ from the store's top-level hours. Store paths come from GET /whataburger/sitemap -- a store's canonical, curbside and delivery page paths all describe the same physical restaurant and return the same address; the response's own path field always reports the canonical page. Passing a state or city directory path returns a 404 rather than a hollow record. Note there is no menu source, so this family is a locator only.
/whataburger/storeReturns one Whataburger store's detail. Store paths come from /api/v1/whataburger/sitemap.
Query parameters:
path (required) — store path, e.g. tx/abilene/1625-tx-hwy-351.html. Case matters: the short-permalink Curbside/Delivery variants (e.g. 1197C.html) 404 if lowercased.A store's canonical, Curbside and Delivery page paths all describe the same physical restaurant and carry the same address, phone and store id — the response's own path field always reports the canonical page, regardless of which variant was requested. Passing a state or city directory path returns a 404 rather than a hollow record, since those pages carry no embedded entity data at all.
Response includes store_id, name, address, phone_number, latitude, longitude, hours[], services[], service_hours, timezone, google_place_id, path, source_url, and fetched_at. Each hours entry has day_of_week, closed, opens, and closes, ordered Monday first. services lists the restaurant services Whataburger publishes for the location, e.g. Curbside, Delivery.
service_hours, when present, breaks the same week down per fulfillment channel: dine_in, drive_thru, curbside, and delivery, each an array shaped exactly like hours. These windows can genuinely differ from each other and from the top-level hours (dine-in) at the same store -- for example curbside may open later and close at midnight while drive-thru runs 24 hours. Whataburger always publishes dine_in and drive_thru schedules; curbside and delivery are included only for stores that actually offer that service, and the whole service_hours object is omitted when none of the four channels have a published schedule.
Note Whataburger menu data is not available, so this family is a locator only.
| Field | Filled in, of 7 checked | Values in the sample |
|---|---|---|
| day_of_week | 7 | “Monday” and 6 other values |
| closed | 7 | true in 0 of 7 |
| opens | 7 | 00:00 in all 7 |
| closes | 7 | 23:59 in all 7 |
| Parameter | Type | Required | Default | Description | Example |
|---|---|---|---|---|---|
| path | string | Yes | Store path from a /whataburger/sitemap entry | tx/abilene/1625-tx-hwy-351.html | |
| x-api-key (header) | string | Yes | API key required |
curl -X GET "https://api.crawlora.net/api/v1/whataburger/store?path=tx%2Fabilene%2F1625-tx-hwy-351.html" \ -H "x-api-key: $CRAWLORA_API_KEY"
{
"code": 200,
"msg": "OK",
"data": {
"store_id": "1403",
"name": "Whataburger",
"address": {
"line1": "1625 TX HWY 351",
"city": "ABILENE",
"region": "TX",
"postal_code": "79601",
"country": "US"
},
"phone_number": "(325) 692-8480",
"latitude": 32.481983,
"longitude": -99.744767,
"hours": [
{
"day_of_week": "Monday",
"closed": false,
"opens": "00:00",
"closes": "23:59"
}
],
"services": [
"Curbside",
"Delivery"
],
"service_hours": {
"dine_in": [
{
"day_of_week": "Monday",
"closed": false,
"opens": "00:00",
"closes": "23:59"
}
],
"drive_thru": [
{
"day_of_week": "Monday",
"closed": false,
"opens": "00:00",
"closes": "23:59"
}
],
"curbside": [
{
"day_of_week": "Monday",
"closed": false,
"opens": "07:00",
"closes": "00:00"
}
],
"delivery": [
{
"day_of_week": "Monday",
"closed": false,
"opens": "00:00",
"closes": "23:59"
}
]
},
"timezone": "America/Chicago",
"google_place_id": "ChIJabc123",
"path": "tx/abilene/1625-tx-hwy-351.html",
"source_url": "https://locations.whataburger.com/tx/abilene/1625-tx-hwy-351.html",
"fetched_at": "2026-09-01T17:00:00Z"
}
}Request schema
No body schema
Response schema
#/definitions/whataburger.storeResponseDoc
| 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 | whataburger.StoreResponse | No | ||||
| data.address | whataburger.StoreAddress | No | ||||
| data.address.city | string | No | ABILENE | |||
| data.address.country | string | No | US | |||
| data.address.line1 | string | No | 1625 TX HWY 351 | |||
| data.address.line2 | string | No | ||||
| data.address.postal_code | string | No | 79601 | |||
| data.address.region | string | No | TX | |||
| data.fetched_at | string | No | ||||
| data.google_place_id | string | No | ||||
| data.hours | array | No | ||||
| data.hours[].closed | boolean | No | false | Closed is true when Whataburger publishes the day with no open interval. | ||
| data.hours[].closes | string | No | 23:59 | |||
| data.hours[].day_of_week | string | No | Monday | |||
| data.hours[].opens | string | No | 00:00 | |||
| data.latitude | number | No | 32.481983 | |||
| data.longitude | number | No | -99.744767 | |||
| data.name | string | No | Whataburger | |||
| data.path | string | No | Path is the canonical /whataburger/store path for this restaurant, as Whataburger's own entity data publishes it -- present even when the requested path was a Curbside or Delivery variant of the same store. | |||
| data.phone_number | string | No | (325) 692-8480 | |||
| data.service_hours | object | No | ServiceHours breaks the same week down per fulfillment channel -- dine-in, drive-thru, curbside and delivery windows can and do differ from each other and from Hours (dine-in) at the same store. Whataburger always publishes drive-thru and dine-in hours; curbside and delivery are omitted here when the entity carries no schedule for them (a store that does not list that service in Services). | |||
| data.service_hours.curbside | array | No | ||||
| data.service_hours.curbside[].closed | boolean | No | false | Closed is true when Whataburger publishes the day with no open interval. | ||
| data.service_hours.curbside[].closes | string | No | 23:59 | |||
| data.service_hours.curbside[].day_of_week | string | No | Monday | |||
| data.service_hours.curbside[].opens | string | No | 00:00 | |||
| data.service_hours.delivery | array | No | ||||
| data.service_hours.delivery[].closed | boolean | No | false | Closed is true when Whataburger publishes the day with no open interval. | ||
| data.service_hours.delivery[].closes | string | No | 23:59 | |||
| data.service_hours.delivery[].day_of_week | string | No | Monday | |||
| data.service_hours.delivery[].opens | string | No | 00:00 | |||
| data.service_hours.dine_in | array | No | ||||
| data.service_hours.dine_in[].closed | boolean | No | false | Closed is true when Whataburger publishes the day with no open interval. | ||
| data.service_hours.dine_in[].closes | string | No | 23:59 | |||
| data.service_hours.dine_in[].day_of_week | string | No | Monday | |||
| data.service_hours.dine_in[].opens | string | No | 00:00 | |||
| data.service_hours.drive_thru | array | No | ||||
| data.service_hours.drive_thru[].closed | boolean | No | false | Closed is true when Whataburger publishes the day with no open interval. | ||
| data.service_hours.drive_thru[].closes | string | No | 23:59 | |||
| data.service_hours.drive_thru[].day_of_week | string | No | Monday | |||
| data.service_hours.drive_thru[].opens | string | No | 00:00 | |||
| data.services | array | No | Services are the restaurant services Whataburger publishes for this location, e.g. "Curbside", "Delivery". | |||
| data.source_url | string | No | ||||
| data.store_id | string | No | 1403 | |||
| data.timezone | string | No | America/Chicago | |||
| 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 |
| 404 | Not Found | #/definitions/app.Response |
| 429 | Too Many Requests | #/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/whataburger/store?path=tx%2Fabilene%2F1625-tx-hwy-351.html" \
-H "x-api-key: $CRAWLORA_API_KEY"