Oda Scraper — Norway Grocery Prices & Products
Pricing
from $1.20 / 1,000 result scrapeds
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
Maintained by CommunityActor 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
- 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. - Set
maxResultsto the number of products you want (default 100). - Run the actor. It calls Oda's own public search API directly — no browser, no login, no cookies required.
- 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
| Field | Type | Required | Description |
|---|---|---|---|
searchQuery | String | No | Norwegian search keyword (e.g. "melk", "kaffe", "brød"). Falls back to "melk" if left empty so a blank run still returns data. |
maxResults | Integer | No | Maximum number of products to return (default: 100, hard cap: 5000). |
proxyConfiguration | Object | No | Apify 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:
| Field | Type | Example |
|---|---|---|
name | String | "Tine Lettmelk 1% fett" |
brand | String | "TINE" |
price | Number | 31.9 |
currency | String | "NOK" |
originalPrice | Number | 70.2 (only present on discounted items) |
pricePerUnit | String | "18.23 kr/l" |
discount | String | "Salg!" (only present on discounted items) |
size | String | "1% fett, 1,75 l" |
inStock | Boolean or null | true — false = out of stock, null = the source didn't state availability |
sku / productId | String | "8143" |
imageUrl | String | Primary product image URL |
url | String | Full product page URL |
scrapedAt | String | ISO 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.
categoryis 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.
Related Scrapers
- REMA 1000 Denmark Scraper — Danish discount-grocery prices and EAN barcodes
- Tesco Scraper — UK grocery prices
- Waitrose Scraper — UK premium grocery prices
- Coop Scraper — Belgian grocery prices
- UK Grocery Price Matrix — cross-retailer UK grocery price comparison