Menicka Crawler avatar

Menicka Crawler

Pricing

Pay per usage

Go to Apify Store
Menicka Crawler

Menicka Crawler

Gathers lunch menu information from menicka.cz

Pricing

Pay per usage

Rating

0.0

(0)

Developer

Jan Buchar

Jan Buchar

Maintained by Community

Actor 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

FieldDescription
citiesCity pages to scrape, e.g. praha-1.html. Each entry is used as a regular expression matched against city links.
distanceAddressAddress to measure restaurant distance from. Requires googleMapsApiToken.
googleMapsApiTokenGoogle 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 install
pnpm 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 # oxlint
pnpm fmt:check # oxfmt
pnpm 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").