Elkjop APIelkjop.no ↗
Access Elkjøp Norway's product catalog, live pricing, specs, reviews, outlet items, weekly deals, and store locations via 12 structured API endpoints.
What is the Elkjop API?
The Elkjøp Norway API exposes 12 endpoints covering the full product lifecycle on elkjop.no, Norway's largest electronics retailer. You can search the catalog with search_products, retrieve granular technical specs with get_product_specifications, check real-time delivery availability by postal code with check_delivery_availability, and pull weekly campaign pricing with get_weekly_deals. Responses include article numbers, brand, price objects with VAT-exclusive amounts, review summaries, and store coordinates.
curl -X GET 'https://api.parse.bot/scraper/064893a5-8bc6-43c8-8f62-e7ec0cf8b544/search_products?page=1&query=laptop' \ -H 'X-API-Key: $PARSE_API_KEY'
Typed, relational, agent-ready
A generated client with real types, enums, and the links between objects — the structure a flat JSON response can't carry. Autocompletes in your editor and reads cleanly to coding agents.
- Fully typed · autocompletes
- Objects link to objects
- Typed errors & pagination
Typed Python client. Set up the SDK in your uv project, then pull this API’s typed client:
uv add parse-sdk uv run parse init uv run parse add --marketplace elkjop-no-api
uv run parse add --marketplace pulls a pinned snapshot of this canonical API — it won’t change underneath you. To customize it, subscribe and swap to your own copy.
"""Walkthrough: Elkjop Norway SDK — search products, check deals, browse stores."""
from parse_apis.elkjop_norway_api import Elkjop, CategoryPath, ProductNotFound
client = Elkjop()
# Search for laptops — limit caps total items fetched across pages.
for product in client.products.search(query="laptop", limit=5):
print(product.title, product.price.amount, product.price.currency)
# Get current weekly deals and inspect the first one.
deal = client.products.deals(limit=1).first()
if deal:
print(deal.title, deal.before_price, deal.price.amount)
# Drill into a product's accessories via sub-resource.
if deal:
for bundle in deal.accessories.list(limit=3):
print(bundle.headline, bundle.promotion_type)
# Get specifications for a product.
if deal:
specs = deal.specifications.get()
print(specs.groups)
# Check delivery availability for a product.
avail = client.availabilities.check(product_id="911981", postal_code="0150")
print(avail.is_buyable_online, avail.stores_with_stock_count)
# Browse a category using constructible Category.
category = client.category(name="/mobil-nettbrett-og-smartklokker/mobiltelefon")
for phone in category.products(limit=3):
print(phone.title, phone.brand)
# Typed error handling — catch ProductNotFound on a bad product check.
try:
bad_avail = client.availabilities.check(product_id="0000000", postal_code="0150")
print(bad_avail.is_buyable_online)
except ProductNotFound as exc:
print(f"Product not found: {exc.product_id}")
# List stores.
for store in client.stores.list(limit=3):
print(store.display_name, store.address.city)
print("exercised: products.search / products.deals / accessories.list / specifications.get / availabilities.check / category.products / stores.list")
Full-text search over Elkjop's product catalog. Returns paginated results with product title, price, brand, article number, stock info, and ratings. Paginates via page number; each page contains up to 48 products.
| Param | Type | Description |
|---|---|---|
| page | integer | Page number (1-based) |
| queryrequired | string | Search keyword (e.g. 'laptop', 'Samsung', 'TV') |
{
"type": "object",
"fields": {
"hits": "array of product objects with title, price, articleNumber, productUrl, brand, rating, etc.",
"page": "integer current page number (1-based)",
"query": "string the search query used",
"nbHits": "integer total number of matching products",
"nbPages": "integer total number of pages",
"hitsPerPage": "integer results per page (48)"
},
"sample": {
"data": {
"hits": [
{
"brand": "HP",
"price": {
"amount": 4995,
"currency": "NOK",
"amountExVat": 3996
},
"title": "HP Laptop 17-cn3851no17 N4120/4/128 17,3\" bærbar PC",
"rating": {
"averageRating": 4.5,
"totalReviewCount": 11
},
"productUrl": "https://www.elkjop.no/product/pc-datautstyr-og-kontor/pc/barbar-pc/hp-laptop-17-cn3851no17-n41204128-173-barbar-pc/911989",
"articleNumber": "911989"
}
],
"page": 1,
"query": "laptop",
"nbHits": 593,
"nbPages": 13,
"hitsPerPage": 48
},
"status": "success"
}
}About the Elkjop API
Product Search and Category Browsing
search_products accepts a query string and an optional page integer, returning hits arrays with fields including title, price, articleNumber, brand, and productUrl, along with pagination metadata (nbHits, nbPages, hitsPerPage). get_categories returns top-level category names with product counts, while get_category_listing takes a category_path (e.g. /mobil-nettbrett-og-smartklokker/mobiltelefon) and pages through that category's product index using the same hits structure.
Product Detail and Specifications
get_product_details accepts a product_id (SKU/article number) and returns a merged response combining catalog data, a pricing object with amount, amountExVat, and currency, plus a reviews_summary drawn from the Feefo review platform. get_product_specifications returns specs grouped by category name — each key maps to a flat object of spec attribute pairs (e.g. {"Skjerm": {"Størrelse": "15.6 tommer"}}). get_product_accessories returns bundles arrays listing compatible items with combined and individual prices.
Deals, Outlet, and Delivery
get_weekly_deals pages through products with active campaign pricing, surfacing before/after prices and discount information in each hits entry. get_outlet_products returns returned or display-model items tagged with bItem grade info. check_delivery_availability takes a product_id and a Norwegian postal_code, returning onlineStock (with inStock boolean and level), isBuyableOnline, isAvailableOnline, and storesWithStockCount.
Store Locations
get_stores returns all Elkjøp store locations with id, displayName, url, address, and openHours. get_store_details takes a store_slug sourced from the get_stores response and returns the full address object including location (lat/lng coordinates), structured openHours with a days array, and any special hours under the other key.
The Elkjop API is a managed, monitored endpoint for elkjop.no — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when elkjop.no changes and a check fails, the API is automatically queued for repair and re-verified. It is built to keep working as the site underneath it changes.
This isn't an official elkjop.no API — it's an independent, maintained REST wrapper over public data. Where the source has no official API (or only a limited one), Parse gives you a stable contract over a source that never promised one, and keeps it current. Need a new endpoint or field? You can revise it yourself in plain English and the agent rebuilds it against the live site in minutes — contributing the change back to the shared API is free.
Will this API break when the source site changes?+
Is this an official API from the source site?+
Can I fix or extend this API myself if I need a new endpoint or field?+
What happens if I call an endpoint that has an issue?+
- Build a Norwegian electronics price tracker by polling
search_productsorget_weekly_dealsfor campaign price changes on specific article numbers. - Power a delivery availability checker by passing customer postal codes to
check_delivery_availabilityand surfacingonlineStockandstoresWithStockCountin a storefront. - Generate product comparison pages using
get_product_specificationsto extract side-by-side spec tables grouped by category. - Aggregate outlet inventory listings by paginating
get_outlet_productsand filtering by bItem grade and price. - Build a store locator map using lat/lng coordinates from
get_store_detailsand structured opening hours. - Display review summaries alongside product listings by combining
get_product_detailsreview_summary data from Feefo. - Curate accessory bundle recommendations by calling
get_product_accessoriesfor a given product SKU and displaying bundle discount amounts.
| Tier | Price | Credits/month | Rate limit |
|---|---|---|---|
| Free | $0/mo | 100 | 5 req/min |
| Hobby | $30/mo | 1,000 | 20 req/min |
| Developer | $100/mo | 5,000 | 100 req/min |
One credit = one API call regardless of which marketplace API you call. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.
Does Elkjøp have an official public developer API?+
What does `check_delivery_availability` actually return, and does it show per-store stock levels?+
check_delivery_availability returns onlineStock (an object with inStock boolean and a level string), isBuyableOnline, isAvailableOnline, and storesWithStockCount (an integer count of stores carrying the product) for a given product_id and Norwegian postal_code. It does not return a store-by-store breakdown of which specific locations have stock. The API covers aggregate availability; you can fork it on Parse and revise it to add per-store stock detail if that endpoint becomes available.Does the API cover Elkjøp's sister brands like Elgiganten (Sweden/Denmark) or Gigantti (Finland)?+
Are product specifications always available via `get_product_specifications`?+
Can I retrieve historical pricing or price history for a product?+
get_product_details and campaign pricing through get_weekly_deals, but there is no historical price timeline in any endpoint response. You can fork it on Parse and revise it to add a price-history tracking layer by persisting repeated get_product_details calls.