Menicka Crawler
Pricing
Pay per usage
Pricing
Pay per usage
Rating
0.0
(0)
Developer
Jan Buchar
Maintained by CommunityActor stats
2
Bookmarked
8
Total users
0
Monthly active users
6 days ago
Last modified
Categories
Share
menicka-crawler
Scrapes daily menus from menicka.cz — one dataset item per menu item (soup or main course), with prices and, optionally, walking distance from an address you pick.
Built on Crawlee v4 (CheerioCrawler) and Apify SDK v4. Requires Node.js 24+ and
pnpm; there is no build step, since Node runs the TypeScript sources directly by
stripping their types.
Input
| Field | Description |
|---|---|
cities | City pages to scrape, e.g. praha-1.html. Each entry is used as a regular expression matched against city links. |
distanceAddress | Address to measure restaurant distance from. Requires googleMapsApiToken. |
googleMapsApiToken | Google Maps API token with the Directions and Places APIs enabled. |
Without a token, longitude, latitude and distance are null.
Output
Each dataset item looks like this:
{"city": "Praha 1","type": "main","order": "5","name": "Bramborové lokše plněné trhaným vepřovým masem ve švestkové omáčce A:1, 3, 7","price": 265,"restaurantName": "Sněmovna v Jakubský","restaurantAddress": "Jakubská, 5, 11000, Praha 1","longitude": null,"latitude": null,"distance": null,"date": "2026-08-19","url": "https://www.menicka.cz/5750-snemovna-v-jakubsky.html"}
type is either main or soup, order is the item's position on the menu,
and distance is the walking distance in metres. On finish, the whole dataset is
also exported to the OUTPUT record of the default key-value store as CSV.
Running it locally
pnpm installpnpm start
Input is read from storage/key_value_stores/default/INPUT.json, results land in
storage/datasets/default.
Checks
The same checks run in CI on every pull request.
pnpm lint # oxlintpnpm fmt:check # oxfmtpnpm typecheck # tsc --noEmit
Pushing to master runs the checks and then deploys the Actor to Apify, which
needs an APIFY_TOKEN repository secret. The same deploy can be triggered by
hand from the Actions tab ("Push Actor").