Dennys APIdennys.com ↗
Access all 1,250+ Denny's restaurant locations, hours, amenities, and full menu data including prices, calories, and dietary tags via a structured REST API.
What is the Dennys API?
This API covers 10 endpoints that expose the full breadth of Denny's location and menu data: find restaurants by state, city, ZIP code, or proximity, then drill into operating hours, amenities, and service types for any single location. The get_all_locations endpoint returns the complete dataset of 1,250+ Denny's restaurants in one response, while get_menu_item_detail exposes per-item pricing, calorie counts, dietary tags, and allergen links.
No input parameters required.
curl -X GET 'https://api.parse.bot/scraper/435dafec-6b79-4465-be7d-5c2f63889540/get_all_states' \ -H 'X-API-Key: $PARSE_API_KEY'
Typed, relational, agent-ready
A generated client with real types, enums, and the links between objects — the structure a flat JSON response can't carry. Autocompletes in your editor and reads cleanly to coding agents.
- Fully typed · autocompletes
- Objects link to objects
- Typed errors & pagination
Typed Python client. Set up the SDK in your uv project, then pull this API’s typed client:
uv add parse-sdk uv run parse init uv run parse add --marketplace dennys-com-api
uv run parse add --marketplace pulls a pinned snapshot of this canonical API — it won’t change underneath you. To customize it, subscribe and swap to your own copy.
"""Walkthrough: Denny's SDK — find locations, browse menus, filter by dietary tags."""
from parse_apis.dennys_restaurant_menu_api import Dennys, Tag, LocationNotFound
client = Dennys()
# List states with Denny's locations, capped at 5
for state in client.states.list(limit=5):
print(state.state_abbr, state.state_name, state.location_count)
# Construct a state and list its cities
ca = client.state(state_abbr="CA")
for city in ca.cities.list(limit=3):
print(city.city_name, city.location_count)
# Search nearby restaurants by ZIP code
nearby = client.nearbylocations.search(query="90210", limit=1).first()
if nearby:
print(nearby.name, nearby.address, nearby.distance)
# Get full location detail from a location summary
loc = client.locationsummaries.list(state="CA", city="Los Angeles", limit=1).first()
if loc:
try:
detail = loc.detail()
print(detail.name, detail.phone, detail.services)
except LocationNotFound as exc:
print(f"Location gone: {exc}")
# Browse menu categories and drill into items
category = client.menucategories.list(limit=1).first()
if category:
first_item = category.items.list(limit=1).first()
if first_item:
full = first_item.detail()
print(full.name, full.dietary_tags, full.allergen_link)
# Filter menu by dietary tag using the Tag enum
for tagged in client.taggeditems.filter_by_tag(tag=Tag.VEGETARIAN, limit=5):
print(tagged.name, tagged.category)
# Bulk fetch all restaurant locations (limited for demo)
for r in client.restaurants.list_all(limit=3):
print(r.name, r.city, r.state, r.street_address)
print("exercised: states.list / cities.list / nearbylocations.search / locationsummaries.list / detail / menucategories.list / items.list / item.detail / taggeditems.filter_by_tag / restaurants.list_all")
Returns every U.S. state and territory that has at least one Denny's restaurant, along with a count of locations in each. The full list is returned in a single response, sorted alphabetically by state abbreviation.
No input parameters required.
{
"type": "object",
"fields": {
"items": "array of state objects with state_abbr, state_name, and location_count"
},
"sample": {
"data": {
"items": [
{
"state_abbr": "AK",
"state_name": "AK",
"location_count": 1
},
{
"state_abbr": "CA",
"state_name": "CA",
"location_count": 343
},
{
"state_abbr": "TX",
"state_name": "TX",
"location_count": 182
}
]
},
"status": "success"
}
}About the Dennys API
Location Discovery
The API provides three complementary ways to navigate Denny's restaurant footprint. get_all_states returns every U.S. state and territory with at least one location, along with a location_count per state — useful for building coverage maps or filtering UIs. From there, get_cities_by_state accepts a two-letter state abbreviation and returns a sorted list of cities with their own counts and URL slugs. get_locations_by_city goes one level deeper, returning each restaurant's name, internal_id, location_id, and address_preview for a given city/state pair.
Single-Location Detail and Proximity Search
get_location_detail accepts either an internal_id or location_id (both obtainable from city-level results) and returns the full record: hours keyed by day abbreviation, phone, services (an array of service type strings), amenities, and a directions_url pointing to Google Maps. For coordinate-based or ZIP-based lookups, search_locations_by_zip_or_city accepts a query string (e.g. 90210 or Los Angeles, CA), an optional radius in miles, and an optional limit, returning results sorted by distance with an is_open flag per restaurant. get_all_locations skips the hierarchy entirely and delivers the complete 1,250+ location dataset — address components, coordinates, services, and availability — in a single paginated-free response.
Menu Structure and Item Detail
get_menu_categories returns the top-level menu structure for a given restaurant_id (or a default location if omitted), listing each category's name, slug, and item_count. Pass a category_slug to get_menu_items_by_category to get every item in that section with price, calories, description, and image_url. get_menu_item_detail accepts a product_slug and returns the full item record including dietary_tags (e.g. vegetarian, togo-fave, breakfast-fave) and an allergen_link to Denny's nutrition page. Menu pricing may vary slightly by location, so pairing a restaurant_id with menu calls yields location-accurate pricing.
Tag-Based Filtering
filter_menu_by_tag scans all menu categories for a given tag and returns matching items with their name, slug, and parent category. Verified tag values include featured, vegetarian, togo-fave, breakfast-fave, lunch-fave, and dinner-fave. This makes it straightforward to build dietary filters, promotional spotlights, or takeout-focused menus without manually iterating every category.
The Dennys API is a managed, monitored endpoint for dennys.com — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when dennys.com changes and a check fails, the API is automatically queued for repair and re-verified. It is built to keep working as the site underneath it changes.
This isn't an official dennys.com API — it's an independent, maintained REST wrapper over public data. Where the source has no official API (or only a limited one), Parse gives you a stable contract over a source that never promised one, and keeps it current. Need a new endpoint or field? You can revise it yourself in plain English and the agent rebuilds it against the live site in minutes — contributing the change back to the shared API is free.
Will this API break when the source site changes?+
Is this an official API from the source site?+
Can I fix or extend this API myself if I need a new endpoint or field?+
What happens if I call an endpoint that has an issue?+
- Build a store-locator widget using
search_locations_by_zip_or_cityto surface nearby Denny's with distance and open/closed status. - Populate a nutrition database with per-item
calories,price,dietary_tags, andallergen_linkfromget_menu_item_detail. - Generate a vegetarian-only menu view using
filter_menu_by_tagwith thevegetariantag. - Create a chain-coverage dashboard by aggregating
location_countvalues fromget_all_states. - Sync a food delivery platform's Denny's catalog using
get_all_locationsto get coordinates, services, and availability in one bulk pull. - Compare menu pricing across locations by calling
get_menu_items_by_categorywith differentrestaurant_idvalues. - Build a late-night dining finder by parsing the
hoursobject fromget_location_detailfor locations open past midnight.
| Tier | Price | Credits/month | Rate limit |
|---|---|---|---|
| Free | $0/mo | 100 | 5 req/min |
| Hobby | $30/mo | 1,000 | 20 req/min |
| Developer | $100/mo | 5,000 | 100 req/min |
One credit = one API call regardless of which marketplace API you call. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.
Does Denny's have an official public developer API?+
What does `get_location_detail` return beyond the address?+
hours as an object keyed by day abbreviation (e.g. Mon, Tue), a phone number, an amenities array (e.g. Wi-Fi, accessible seating labels), a services array listing available order types, and a directions_url linking to Google Maps. You need either internal_id or location_id from city-level or search results to call it.Does `get_all_locations` require pagination to retrieve the full dataset?+
Does the API expose historical menu pricing or past menu versions?+
get_menu_items_by_category or get_menu_item_detail returns the price and details currently listed for that item at the specified restaurant. Historical pricing or archived menus are not covered. You can fork the API on Parse and revise it to store and timestamp responses if you need a price-history dataset.