K-Ruoka Scraper — Finnish Grocery Products & Prices avatar

K-Ruoka Scraper — Finnish Grocery Products & Prices

Pricing

from $1.20 / 1,000 result scrapeds

Go to Apify Store
K-Ruoka Scraper — Finnish Grocery Products & Prices

K-Ruoka Scraper — Finnish Grocery Products & Prices

Scrape products, prices, and availability from K-Ruoka.fi (Kesko's Finnish grocery chain). Returns EAN, brand, category, and per-unit pricing. No login required.

Pricing

from $1.20 / 1,000 result scrapeds

Rating

0.0

(0)

Developer

Studio Amba

Studio Amba

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

a day ago

Last modified

Categories

Share

K-Ruoka Scraper

Scrape grocery products, prices, and stock status from K-Ruoka.fi — the online storefront for Kesko's K-Citymarket, K-Supermarket, K-Market, and Neste K chains, one of Finland's two largest grocery groups alongside S-Group (Prisma). Returns EAN codes, brand, category breadcrumb, and per-unit pricing for each product a search query matches.

Input

FieldTypeDescription
searchQuerystringFinnish search term (default: "kahvi" for coffee)
maxResultsintegerLimit, capped at 100 (default: 100) — see Limitations
sbrWsCdpstringBright Data Scraping Browser CDP endpoint. Optional — the actor ships with one preconfigured
proxyConfigurationobjectUnused (kept for platform convention) — see Anti-bot handling

Output

FieldTypeExample
namestring"Pirkka Costa Rica kahvi 500g vaalea paahto"
brandstring"Pirkka"
pricenumber | null5.99
currencystring"EUR"
originalPricenumber6.79 (only present during an active promotion)
pricePerUnitstring"11.98 €/kg"
discountstring"−11 %"
eanstring"6410405181190"
skustringKesko internal PIM code
productIdstringSite product ID (matches EAN)
inStockboolean | nulltruenull when the store doesn't publish availability for this item, never assumed false
imageUrlstringProduct image URL
categorystring"Juomat > Kahvi ja suodatinpussit > Jauhettu kahvi vaalea"
urlstringFull product page URL
searchQuerystringInput echo
searchStoreIdstringKesko store the price/availability is scoped to (site-determined default, see below)
scrapedAtstringISO 8601 timestamp

Anti-bot handling

K-Ruoka.fi runs Cloudflare Bot Management on every route, including the sitemap. Plain HTTP requests and headless-Chromium navigations both get a hard 403 "Pyyntö estetty" (Request blocked) page — confirmed live, this isn't a solvable interactive challenge. Bright Data Web Unlocker also fails on this domain: its expect_element heuristic waits for a .nav-button selector that never appears and times out after 30 seconds on every attempt, homepage and API alike.

The only working route is a real, fully-rendered browser session — this actor connects to a Bright Data Scraping Browser over CDP, navigates the search page, and reads the JSON response the page's own client code requests from K-Ruoka's /kr-api/v2/product-search/ endpoint. No DOM scraping is involved: the JSON already carries EAN, brand, category, per-unit pricing, and the image URL. A programmatic fetch() injected into the same page against that endpoint gets a 404 (the site appears to fingerprint request origin beyond headers alone), so the actor only reads the network response the page generates on real navigation — block detection is content-based (checking the rendered page title/body for "estetty"/"blocked"), not just the HTTP status code, since Cloudflare's deny page itself returns as a normal-looking response from the browser's point of view.

Limitations

  • Up to ~100 results per search query. K-Ruoka's search API returns a single batch of up to 100 products per query and no further pagination (infinite scroll, a "show more" click, and offset-based navigation were all tested — none returned additional results). Run the actor again with a different search term for broader catalogue coverage.
  • Store-scoped pricing. K-Ruoka prices and stock are set per physical store. The site resolves a default store automatically (Bright Data's Finnish exit currently resolves to store N106, K-Citymarket Iso Omena) — this isn't user-selectable input today, but every record carries searchStoreId so you know which store's pricing you're looking at.
  • Per-result cost: this actor uses a Bright Data Scraping Browser session (one browser page load per search query, not per product), so cost is dominated by the flat per-run Scraping Browser session rather than scaling per item — see Cost estimate.
  • Usage cost for a run only settles once the run reaches SUCCEEDED — a run that fails partway through is not billed for completed items.

How to use K-Ruoka Scraper

  1. Open the Input tab and enter a Finnish search term (e.g. maito, leipä, jauheliha)
  2. Adjust maxResults if you want fewer than the default 100
  3. Click Start and wait for the run to complete (typically under a minute)
  4. Download results from the Output tab in JSON, CSV, Excel, XML, or HTML
  5. Schedule recurring runs from the Schedule tab for ongoing price tracking

How to scrape K-Ruoka data

This actor automates extracting structured product data from K-Ruoka.fi. Run it directly from the Apify Console, the Apify API, or any of the official SDKs (JavaScript, Python). It handles the Cloudflare bypass, network interception, and retries — you get clean JSON, not raw HTML to parse.

Typical workflows:

  • One-off export: enter a search term, set maxResults, and run
  • Scheduled monitoring: set a daily cron in the Schedule tab to track K-Ruoka prices and promotions over time
  • Programmatic integration: trigger runs from your backend via the Apify API and pull the dataset when finished
  • Webhook automation: receive a callback the moment a run completes and pipe results into Zapier, Make, n8n, BigQuery, or Google Sheets
  • Cross-retailer comparison: pair with Prisma Scraper to compare K-Ruoka (Kesko) against Prisma (S-Group) — Finland's two largest grocery chains

Why use K-Ruoka Scraper

  • Price monitoring — track K-Ruoka prices, promotions, and stock at scale
  • Competitive intelligence — benchmark your catalogue against Kesko's pricing and assortment
  • Market research — analyze category trends and promotional patterns in the Finnish grocery market
  • Data feeds — build product datasets for affiliate sites, price comparison tools, or price-tracking apps
  • No login required — public search data, no account or cookies needed

Cost estimate

Pricing on the Apify platform is usage-based — you pay for what you actually run. As a rough guide:

  • A single search (up to 100 products): a few cents
  • 10 searches (up to ~1,000 products): typically under $1 USD

Cost is dominated by the Bright Data Scraping Browser session needed to pass Cloudflare, not by result count — running more searches per call (higher maxResults within the 100 cap) is more cost-efficient than many small runs.

Tips for best results

  • Use specific Finnish terms — generic English queries return few or no matches; try the Finnish product/category name
  • Start small — run with maxResults: 10 to verify your search term before scaling up
  • Combine multiple searches — since each run covers one query, chain several search terms in a Task or via the API for broader catalogue coverage
  • Schedule runs — daily or weekly runs are usually enough for price monitoring on a fixed product list

FAQ and support

Is it legal to scrape K-Ruoka? This actor extracts publicly available product data. Always review the website's Terms of Service before scraping at scale, and respect rate limits.

Why am I getting fewer than 100 results? The search term may simply have fewer matching products — check totalHits isn't the bottleneck by trying a broader term.

Can I pick a specific store? Not directly today — the site resolves a default store server-side. Every record includes searchStoreId so you can see which store's pricing was returned.

The actor fails immediately. This almost always means the preconfigured Bright Data Scraping Browser endpoint is temporarily unavailable — retry the run, or supply your own sbrWsCdp endpoint in the input.

For issues, feature requests, or bug reports, open a ticket in the Issues tab on the actor page. We monitor every actor and ship fixes quickly when sites change.