Walgreens API endpoint
Returns Walgreens stores near a latitude/longitude or a zip code, nearest first: name, address, phone, hours, and in-store services (pharmacy, clinic, photo, and more) for each. Public data sourced from Walgreens' own store locator.
/walgreens/storesQuery parameters:
latitude (optional) — search origin latitude; provide together with
longitude, or provide zip instead.longitude (optional) — search origin longitude; provide together with
latitude, or provide zip instead.zip (optional) — US ZIP code; used when latitude/longitude are
omitted.Notable response behavior:
distance_miles is straight-line distance from the given coordinates
(or the ZIP code's resolved coordinates).services lists in-store service indicators such as pharmacy,
immunizations, one-hour photo, and clinic, when Walgreens reports them.8AM, 10PM); a store with 00AM pharmacy hours has no pharmacy
hours published.total_count is the locator's total matching-record count, which can be
larger than the number of stores actually returned (the locator caps the
returned list at roughly the nearest 70 stores).zip returns 400; providing a
latitude without a longitude (or vice versa) also returns 400.| Field | Filled in, of 72 checked | Values in the sample |
|---|---|---|
| store_number | 72 | 162 to 21,447, median 4,978 |
| name | 72 | “Walgreen Drug Store” and 11 other values |
| brand | 63 | Walgreens (62), Walgreens Specialty Pharmacy (1) |
| address_line1 | 72 | |
| intersection | 68 | “Southeast corner of CLARK & MONROE” and 67 other values |
| city | 72 | CHICAGO (71), CICERO (1) |
| state | 72 | IL in all 72 |
| zip | 72 | |
| county | 72 | COOK in all 72 |
| phone | 72 | |
| fax | 72 | |
| latitude | 72 | |
| longitude | 72 | |
| distance_miles | 72 | 0.17 to 7.26, median 4.4 |
| store_type | 72 | 1 to 24, median 1 |
| store_open_time | 72 | 7AM (45), 12AM (8), 6AM (7) and 3 more |
| store_close_time | 72 | “7PM” and 8 other values |
| pharmacy_open_time | 70 | 9AM (47), 8AM (12), 10AM (6) and 2 more |
| pharmacy_close_time | 70 | “6PM” and 8 other values |
| time_zone | 72 | CE in all 72 |
| services | 72 | median 4 entries |
| Parameter | Type | Required | Default | Description | Example |
|---|---|---|---|---|---|
| latitude | number | No | Latitude; provide with longitude, or provide zip instead | 41.8781 | |
| longitude | number | No | Longitude; provide with latitude, or provide zip instead | -87.6298 | |
| zip | string | No | US ZIP code; used when latitude/longitude are omitted | 60601 | |
| x-api-key (header) | string | Yes | API key required |
curl -X GET "https://api.crawlora.net/api/v1/walgreens/stores" \ -H "x-api-key: $CRAWLORA_API_KEY"
{
"code": 200,
"msg": "OK",
"data": {
"total_count": 438,
"stores": [
{
"store_number": "5387",
"name": "Walgreen Drug Store",
"brand": "Walgreens",
"address_line1": "79 W MONROE ST",
"intersection": "Southeast corner of CLARK & MONROE",
"city": "CHICAGO",
"state": "IL",
"zip": "60603",
"county": "COOK",
"phone": "312-346-5727",
"latitude": 41.88058451,
"longitude": -87.63064779,
"distance_miles": 0.17,
"store_open_time": "8AM",
"store_close_time": "4PM",
"time_zone": "CE",
"services": [
"Immunizations",
"Flu Shot",
"One Hour Photo"
]
}
]
}
}Request schema
No body schema
Response schema
#/definitions/walgreens.storesResponseDoc
| Field | Type | Required | Enum | Bounds | Example | Description |
|---|---|---|---|---|---|---|
| code | integer | No | 200 | |||
| data | walgreens.StoresResponse | No | ||||
| data.stores | array | No | ||||
| data.stores[].address_line1 | string | No | ||||
| data.stores[].brand | string | No | ||||
| data.stores[].city | string | No | ||||
| data.stores[].county | string | No | ||||
| data.stores[].distance_miles | number | No | ||||
| data.stores[].fax | string | No | ||||
| data.stores[].intersection | string | No | ||||
| data.stores[].latitude | number | No | ||||
| data.stores[].longitude | number | No | ||||
| data.stores[].name | string | No | ||||
| data.stores[].pharmacy_close_time | string | No | ||||
| data.stores[].pharmacy_open_time | string | No | ||||
| data.stores[].phone | string | No | ||||
| data.stores[].services | array | No | ||||
| data.stores[].state | string | No | ||||
| data.stores[].store_close_time | string | No | ||||
| data.stores[].store_number | string | No | ||||
| data.stores[].store_open_time | string | No | ||||
| data.stores[].store_type | string | No | ||||
| data.stores[].time_zone | string | No | ||||
| data.stores[].zip | string | No | ||||
| data.total_count | integer | No | ||||
| msg | string | No | OK |
| Status | Description | Schema |
|---|---|---|
| 400 | Bad Request | #/definitions/app.Response |
| 500 | Internal Server Error | #/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/walgreens/stores" \
-H "x-api-key: $CRAWLORA_API_KEY"