Pyszne APIpyszne.pl ↗
Search restaurants, list nearby options, and get delivery details from Pyszne.pl via 3 structured endpoints. Ratings, ETAs, fees, and cuisine types included.
What is the Pyszne API?
The Pyszne.pl API provides 3 endpoints to search and retrieve restaurant data from Poland's major food delivery platform. Use search_restaurants to find restaurants or dishes by name near an address, list_restaurants to pull a ranked feed of nearby venues with ratings and delivery ETAs, or get_restaurant_details to fetch fees, minimum order values, and open/busy status for a specific restaurant at a given delivery address.
curl -X GET 'https://api.parse.bot/scraper/5a6f3663-ff6c-4dda-b212-7d1d58017225/search_restaurants?limit=5&query=pizza&address=Marsza%C5%82kowska+1+Warsaw+Poland' \ -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 pyszne-pl-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.
"""Pyszne.pl: discover nearby restaurants and check delivery details."""
from parse_apis.pyszne_pl_restaurant_api import Pyszne, RestaurantNotFound
client = Pyszne()
# List restaurants near an address, capped at 5 items.
for restaurant in client.restaurantsummaries.list(address="Marszałkowska 1 Warsaw Poland", limit=5):
print(restaurant.name, restaurant.rating, restaurant.city)
# Search for a cuisine/restaurant name and take the first match.
result = client.searchresults.search(query="pizza", address="Marszałkowska 1 Warsaw Poland", limit=1).first()
if result:
print(result.name, result.classification, result.subtitle)
# Drill into delivery details for a listed restaurant.
summary = client.restaurantsummaries.list(address="Marszałkowska 1 Warsaw Poland", limit=1).first()
if summary:
detail = summary.details(address="Marszałkowska 1 Warsaw Poland")
print(detail.delivery_eta_min, detail.delivery_eta_max, detail.rating, detail.is_open)
# Fetch a restaurant directly by ID and handle not-found.
try:
r = client.restaurants.get(restaurant_id="9167851")
print(r.restaurant_id, r.is_busy, r.delivery_fee, r.minimum_order_value)
except RestaurantNotFound as exc:
print(f"Restaurant not found: {exc.restaurant_id}")
print("exercised: restaurantsummaries.list / searchresults.search / summary.details / restaurants.get")
Full-text autocomplete search over restaurants and dishes near a delivery address. Returns a mixed list of Restaurant and Dish/Cuisine matches. Each Restaurant match includes a partner_id usable with get_restaurant_details; Dish and Cuisine matches are name-only suggestions without a direct restaurant link. Results are ranked by relevance to the query at the resolved coordinates.
| Param | Type | Description |
|---|---|---|
| limit | integer | Maximum number of results to return |
| query | string | Restaurant or dish name to search for |
| address | string | Delivery address to search near. Geocoded to coordinates server-side. |
{
"type": "object",
"fields": {
"query": "string, the search query used",
"total": "integer, number of results returned",
"address": "string, the delivery address used for the search",
"results": "array of SearchResult objects with name, classification, partner_id, subtitle, seo_name, and image_url",
"latitude": "number, latitude of the resolved address",
"longitude": "number, longitude of the resolved address"
},
"sample": {
"data": {
"query": "pizza",
"total": 2,
"address": "Marszałkowska 1 Warsaw Poland",
"results": [
{
"name": "Pizza",
"seo_name": "",
"subtitle": "",
"image_url": "",
"partner_id": "",
"classification": "Cuisine"
},
{
"name": "pizza po zachodzie",
"seo_name": "pizza-po-zachodzie",
"subtitle": "Italian, Snacks, Pizza",
"image_url": "https://res.cloudinary.com/tkwy-prod-eu/image/upload/c_pad,h_100,w_100/f_auto/q_auto/v1/static-takeaway-com/images/restaurants/pl/NN730NQ/logo_465x320.png",
"partner_id": "2734574",
"classification": "Restaurant"
}
],
"latitude": 52.214291,
"longitude": 21.020957
},
"status": "success"
}
}About the Pyszne API
Endpoints Overview
The API covers three operations against Pyszne.pl's restaurant catalog. search_restaurants accepts a free-text query (restaurant or dish name), an address, and an optional limit. It returns an array of matching results, each with name, classification, partner_id, seo_name, subtitle, and image_url, plus the geocoded latitude and longitude of the resolved address. list_restaurants takes an address and optional limit and returns all available restaurants in that area sorted by the platform's default ranking, with fields including cuisines, rating, rating_count, delivery_eta_min, delivery_eta_max, and is_open.
Restaurant Details
get_restaurant_details is the per-restaurant endpoint. It requires a restaurant_id (sourced from search_restaurants results partner_id or list_restaurants id) and an address for address-specific delivery calculations. The response includes delivery_fee in grosze (PLN minor units), minimum_order_value also in grosze, delivery_eta_min/delivery_eta_max in minutes, is_open, is_busy, rating, and rating_count. The currency field confirms PLN.
Coverage and Scope
All three endpoints resolve delivery context against a Polish address, so accuracy of delivery fee and ETA fields depends on the address supplied. The search_restaurants endpoint covers both restaurant-name and dish-name queries, returning a unified results array with a classification field to distinguish between the two result types. Restaurant IDs are consistent across endpoints, allowing search_restaurants or list_restaurants results to feed directly into get_restaurant_details.
The Pyszne API is a managed, monitored endpoint for pyszne.pl — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when pyszne.pl 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 pyszne.pl 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?+
- Find all open restaurants near a Warsaw address and filter by cuisine type from the
cuisinesfield. - Compare delivery ETAs and fees across multiple restaurants for a given delivery address.
- Check whether a specific restaurant is currently busy or closed before surfacing it to end users.
- Aggregate
ratingandrating_countdata across restaurants in a Polish city for market research. - Build a dish-search feature using the
queryparameter insearch_restaurantsto match dish names. - Track minimum order values across restaurants by polling
get_restaurant_detailsover time. - Resolve a free-text delivery address to geocoordinates using the
latitude/longitudefields returned by any endpoint.
| 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 Pyszne.pl have an official developer API?+
What does `search_restaurants` return beyond a list of restaurant names?+
results array includes name, classification (distinguishing restaurant vs. dish matches), partner_id, seo_name, subtitle, and image_url. The response also includes the geocoded latitude and longitude for the resolved delivery address and a total count of matches.Are menu items or dish-level prices available through the API?+
Is this API limited to a specific region of Poland?+
address input. Areas outside Pyszne.pl's delivery network will return fewer or no results. Cross-country coverage beyond Poland is not included since Pyszne.pl operates specifically in the Polish market.How are delivery fees represented in the response?+
delivery_fee and minimum_order_value in get_restaurant_details are returned as integers in grosze, the minor unit of Polish zloty (100 grosze = 1 PLN). The currency field confirms PLN. A null value for delivery_fee typically indicates free delivery or that the fee is unavailable for the requested address.