Oda Scraper — Norway Grocery Prices & Products avatar

Oda Scraper — Norway Grocery Prices & Products

Pricing

from $1.20 / 1,000 result scrapeds

Go to Apify Store
Oda Scraper — Norway Grocery Prices & Products

Oda Scraper — Norway Grocery Prices & Products

Scrape Oda (oda.com), Norway's dominant online grocery delivery service, by keyword: product names, brands, prices in NOK, unit prices, discounts, availability and images. No login or cookies.

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

2 days ago

Last modified

Categories

Share

Scrape product data from Oda (formerly Kolonial.no), Norway's dominant online grocery delivery service, by keyword: names, brands, prices in NOK, unit prices, discounts, stock status and images.

Why use this actor?

Oda is the biggest online grocery in Norway — the equivalent of Tesco in the UK or REMA 1000 in Denmark for online delivery. There is no existing Apify actor covering it. If you're building a Nordic grocery price comparison tool, tracking NOK grocery inflation, monitoring your own products' pricing and promotions on Oda, or feeding grocery data into a meal-planning or budgeting app, this actor gives you structured product data without writing any scraping code yourself.

How to scrape Oda data

  1. Enter a Norwegian search keyword (searchQuery), e.g. melk, kaffe, brød, ost, pasta. Leave it blank and the actor falls back to a sensible default so it still returns data.
  2. Set maxResults to the number of products you want (default 100).
  3. Run the actor. It calls Oda's own public search API directly — no browser, no login, no cookies required.
  4. Download results as JSON, CSV, or Excel from the Dataset tab, or pull them via the Apify API.

Under the hood, this actor calls Oda's public JSON search endpoint (oda.com/api/v1/search/mixed/) rather than parsing rendered HTML — it's faster, cheaper to run, and returns cleaner, more reliable data than scraping the page.

Input

FieldTypeRequiredDescription
searchQueryStringNoNorwegian search keyword (e.g. "melk", "kaffe", "brød"). Falls back to "melk" if left empty so a blank run still returns data.
maxResultsIntegerNoMaximum number of products to return (default: 100, hard cap: 5000).
proxyConfigurationObjectNoApify proxy settings. Oda's search API has no anti-bot and is not geo-locked, so the free automatic proxy pool is enough — no residential proxy needed.

Output

Each result contains:

FieldTypeExample
nameString"Tine Lettmelk 1% fett"
brandString"TINE"
priceNumber31.9
currencyString"NOK"
originalPriceNumber70.2 (only present on discounted items)
pricePerUnitString"18.23 kr/l"
discountString"Salg!" (only present on discounted items)
sizeString"1% fett, 1,75 l"
inStockBoolean or nulltruefalse = out of stock, null = the source didn't state availability
sku / productIdString"8143"
imageUrlStringPrimary product image URL
urlStringFull product page URL
scrapedAtStringISO 8601 timestamp

Note: Oda's API does not expose an EAN/barcode field for any product — this is a limitation of the source data, not the actor.

Example output

{
"name": "Tine Lettmelk 1% fett",
"brand": "TINE",
"price": 31.9,
"currency": "NOK",
"pricePerUnit": "18.23 kr/l",
"size": "1% fett, 1,75 l",
"inStock": true,
"sku": "8143",
"productId": "8143",
"imageUrl": "https://images.oda.com/local_products/7fa76433-c802-4e86-b529-d6c9f0f9b478.jpg",
"url": "https://oda.com/no/products/8143-tine-tine-lettmelk-1-fett/",
"scrapedAt": "2026-08-21T14:10:15.983Z"
}

A discounted item also carries originalPrice and discount:

{
"name": "Friele Frokostkaffe Filtermalt",
"brand": "Friele",
"price": 41.9,
"currency": "NOK",
"originalPrice": 70.2,
"discount": "Salg!",
"pricePerUnit": "167.60 kr/kg",
"size": "Filtermalt, 250 g",
"inStock": true,
"sku": "469",
"productId": "469",
"url": "https://oda.com/no/products/469-friele-frokostkaffe-filtermalt/",
"scrapedAt": "2026-08-21T14:10:28.953Z"
}

Cost estimate

This actor uses roughly $0.002 per result plus a small per-run start fee (pay-per-event pricing, no compute-unit billing to track). A run of 1,000 products costs about $2. Each result is one Oda API call amortized across a 30-item page — there is no per-product detail fetch, so cost scales linearly and predictably with maxResults. Note: a run's usage cost only settles after the run reports SUCCEEDED — checking the dataset mid-run will show a cost far below the eventual total.

Limitations

  • Oda's API does not publish EAN/GTIN barcodes for any product.
  • category is not populated — Oda's search endpoint doesn't return category breadcrumbs (only its separate per-product detail endpoint does, at the cost of one extra request per item, which this actor doesn't make in v1).
  • The search endpoint returns a fixed 30 items per page; this is a hard limit on Oda's side, not something the actor can override.
  • Data is scraped from the public website and may change without notice.
  • Respect Oda's terms of service and use responsibly.

Need this data on a schedule, or a custom version?

We run this scraper as a managed service for businesses: scheduled runs, deduplication, delta detection, and delivery to your inbox, Google Sheets, or API — maintenance included. We can also build a custom version with your exact fields and filters, or combine multiple sources into one feed.

See studioamba.dev/services or email hello@studioamba.dev for a free data sample. We maintain 300+ European web scrapers and answer within one business day.