Skip to content

Latest commit

 

History

1 Commit

Folders and files

NameName
Last commit message
Last commit date
 
 

Repository files navigation

Føtex Scraper - Danish Grocery Products & Prices

Scrape Føtex (Salling Group), one of Denmark's largest supermarket chains. Get the full product catalog with current shelf prices, Føtex Plus member offers, and per-unit comparison pricing — ready for price monitoring and grocery analytics.

Føtex Scraper - Danish Grocery Products & Prices on Apify →


🚀 How to use this actor

💚 $5 free Apify credits — every month

No credit card required. No commitment. Cancel anytime.

  1. Click sign up — pick GitHub, Google, or email; takes ~30 seconds
  2. Open this actor — input is pre-filled with a working example
  3. Click Start — export results as JSON, CSV, or Excel

Your $5 monthly platform credit is enough to run this actor right away — and again every month — scraping typically several hundred to several thousand results per run, depending on your input.

Key features

Search with filters — Search by keyword and location.

Incremental mode — Only get new or changed listings since your last run. Content hash per listing — no duplicates, no re-processing.

Change classification — Track unchanged, expired across runs. Build audit trails of how listings evolve over time.

Compact output — Emit core fields only (AI-agent / MCP-friendly). Keeps response size small for LLM workflows.

Result cap — Stop after N listings (up to 10.000). Set to 0 for the full catalog.

Export anywhere — Download as JSON, CSV, or Excel. Stream via Apify API, webhooks, or integrations with Make, Zapier, Airbyte, Keboola.

Structured data — Every listing returns the same schema with consistent field naming. All fields always present — null when unavailable, never omitted.


Use cases

Data pipeline automation Integrate with your ETL pipeline to collect structured listings from the source on a schedule. Export to CSV, JSON, or directly to your database. Use compact mode to control output size.

Market research Monitor listings, track trends, and analyze market dynamics with structured, deduplicated data from the source.

Change monitoring Run daily or hourly in incremental mode to capture only new, updated, or expired listings. Perfect for price-tracking, churn analysis, and alerting pipelines.

AI / LLM training data Structured JSON per listing is ready for RAG pipelines, embeddings, and agent workflows. Compact mode trims tokens for LLM context windows.


Quick start

{
  "query": "mælk",
  "maxResults": 10
}

Input parameters

Parameter Type Default Description
productIds array [] Track a specific shopping list by EAN/barcode (e.g. ["5701115583819", "5712876736208"]). Returns just those products with per-line basket economics (quantity, line subtotal, Føtex Plus member total and saving). Pair with 🔢 Quantities to weight each item.
quantities object,array,string {} Optional per-product counts for basket mode. Two accepted forms:
• Object map: {"5701115583819": 2, "5712876736208": 6} (compact, preferred for the Console editor)
• Array of pairs: [{"ean": "5701115583819", "qty": 2}] (useful from Make / n8n / Zapier flows)
Drives the basket subtotal and Føtex Plus saving roll-up. Default qty=1 per product when omitted. Ignored outside basket mode.
query string — Keyword search across the Føtex catalog (e.g. "mælk", "økologisk", "kaffe"). Searches product names, brands and categories. Leave empty to scan the entire catalog. Ignored when 🛒 Basket EANs are supplied.
categories array [] Limit to specific top-level categories (e.g. ["Mejeri & køl", "Frugt & grønt"]). Leave empty for all categories. Accepts a comma-separated string or a JSON array.
maxResults integer 200 Maximum total products (0 = unlimited; full catalog ≈ 13,900).
campaignsOnly boolean false Only emit products currently on offer — in this week's leaflet (avis) or a Føtex Plus member offer.
memberOffersOnly boolean false Only emit products with an active Føtex Plus membership offer (cpOffer), with member price and discount %.
inStockOnly boolean false Drop products flagged as out of stock.
compact boolean false Keep only shopping essentials (identity, current price, per-unit price, offer flags, member price, units, image) and drop heavy fields (nutrition, ingredients, image variants, member-offer detail). Smaller rows for AI agents and dashboards. Same row count, same billing.
excludeEmptyFields boolean false Drop null, empty-string and empty-array fields from each record before push.
incrementalMode boolean false Compare against the previous run's state and emit only NEW / UPDATED / EXPIRED products (price changes, new SKUs, delistings). Requires 🔑 State Key. EXPIRED detection only fires for a basket or a full uncapped catalog scan (a keyword search can't tell delisted from out-of-scope).
stateKey string — Stable identifier for incremental tracking (e.g. "my-weekly-basket"). Required when Incremental Mode is on so multiple baskets / queries don't share state.
emitUnchanged boolean false Include products with no detected change in the output (default: skip — only changes are emitted).
emitExpired boolean false Include products that disappeared since the prior run (delisted / out of stock). Only meaningful for basket or full-catalog runs.
telegramToken string — Telegram bot token (from @BotFather). Required for Telegram notifications.
telegramChatId string — Telegram chat or channel ID (e.g. "-100123456789"). Required when telegramToken is set.
discordWebhookUrl string — Discord incoming webhook URL.
slackWebhookUrl string — Slack incoming webhook URL.
whatsappAccessToken string — WhatsApp Cloud API token. Recipient must have messaged the business number within the last 24h.
whatsappPhoneNumberId string — Your WhatsApp Business phone-number ID.
whatsappTo string — Recipient phone in E.164 format without + (e.g. "4512345678").
webhookUrl string — Receives a JSON POST with {metadata, items} after each run — for n8n / Make / Zapier / custom backends.
webhookHeaders object — Optional JSON object of custom headers (e.g. {"Authorization":"Bearer ..."}).
notificationLimit integer 5 Maximum number of products included in each notification message (1–20).
notifyOnlyChanges boolean false When Incremental Mode is on, only send notifications for products with a lifecycle event (NEW / UPDATED). Unchanged products are still pushed to the dataset but don't trigger alerts.

Output fields

Every listing returns the same 55-field schema. Missing values are null — never omitted.

  • ean
  • articleId
  • name
  • description
  • productType
  • brand
  • subBrand
  • manufacturer
  • categoryLvl0
  • categoryLvl1
  • categoryLvl2
  • categoryPath
  • labels
  • ageLimit
  • price
  • inStock
  • offerDescription
  • comparePrice
  • normalComparePrice
  • offerComparePrice
  • compareUnit
  • multiPromoPrice
  • multiPromoQty
  • isOnOffer
  • isInCurrentLeaflet
  • memberOffer
  • memberPrice
  • memberOriginalPrice
  • memberSavings
  • memberDiscountPercent
  • memberOfferQty
  • memberOfferTitle
  • memberOfferId
  • memberOfferFrom
  • memberOfferTo
  • unitSize
  • unitMeasure
  • ingredients
  • nutrition
  • imageUrl
  • images
  • currency
  • storeId
  • source
  • portalUrl
  • scrapedAt
  • changeType
  • firstSeenAt
  • lastSeenAt
  • expiredAt
  • quantity
  • lineSubtotal
  • lineMemberTotal
  • lineSavings
  • lineTotal

Sample output

One object per listing. Here is a real example from a production run:

{
  "ean": "5740301223825",
  "articleId": "10400157-EA",
  "name": "Rejer fra Nordatlanten i lage",
  "description": "Rejer fra Nordatlanten i lage",
  "productType": "Rejer i lage. Indeholder sødemiddel",
  "brand": "Royal Arctic",
  "subBrand": null,
  "manufacturer": null,
  "categoryLvl0": "Mejeri & køl",
  "categoryLvl1": "Pålæg",
  "categoryLvl2": "Fiskepålæg",
  "categoryPath": "Mejeri & køl > Pålæg > Fiskepålæg > Rejer"
}

Truncated — full records contain 55 fields. See Output fields for the complete schema.

Try Føtex Scraper - Danish Grocery Products & Prices now — $5 free credit, no credit card →


Pricing

Pay only for what you extract. No subscription required — Apify's free $5 credit covers thousands of results.

Event Price (USD)
Actor Start $0.01
Result $0.002

See the actor on Apify for current pricing.


FAQ

How much does it cost? Pay-per-event pricing — you only pay for listings extracted. Apify's free $5 credit is enough to run thousands of results before you pay anything.

How does incremental mode work? Each listing gets a content hash. On subsequent runs, only new or changed listings are emitted — saving time, compute, and storage. Expired listings can be tracked separately.

Do I need an API key or credentials? No. Just sign up for Apify, paste your input, and click Start. No credit card required.


Related products by Black Falcon Data

Browse all Black Falcon Data actors →


Getting started with Apify

New to Apify? Create a free account with $5 credit — no credit card required.

  1. Sign up — $5 platform credit included
  2. Open Føtex Scraper - Danish Grocery Products & Prices and configure your input
  3. Click Start — export results as JSON, CSV, or Excel

Need more later? See Apify pricing.


About Black Falcon Data

Black Falcon Data builds production-grade web scrapers for job boards and marketplace data. Browse our full actor catalog at www.blackfalcondata.com.


Last updated: 2026 06