Media Expert API & Scraper
Media Expert is Poland's largest electronics and home-appliance retailer (TVs, phones, laptops, washing machines, coffee machines), selling its own stock and, for some products, through marketplace sellers.
🤖 Using an AI assistant? Copy this link into ChatGPT / Claude / Cursor — it reads every endpoint and parameter instantly and tells you if this API fits your use case.
This API reads mediaexpert.pl as JSON. `search` takes Polish or brand/model keywords; `category` lists one Media Expert category by id or URL. Both take a price range in PLN, an on-promotion switch and four sort orders, and return per product: product id, item number (erp id), EAN, model, brand, title, URL, image, the shelf price, the crossed-out price, the EU Omnibus lowest price of the last 30 days, the promo-code price with its code and validity dates, the app-only price, the club price, the seller (Media Expert or a named marketplace seller with its minimum shipping cost), the availability label, online and in-store stock, whether the product is in stores, and the rating and review count. When Media Expert answers a keyword with a category (for example `pralka` goes to washing machines) the API lists that category and says so. `product` adds the grouped technical specifications, all images, the breadcrumb, the instalment offer and delivery options when published; `description` returns the long product description as plain text.
What a Media Expert field actually contains
Fields that read differently from how they look. Every row was measured against live Media Expert responses on 2026-10-15.
| Field | What it holds |
|---|---|
| product_id, erp_id, offer_id | product_id (e.g. 7872945) is what product and description take; a product URL or the erp_id works too. erp_id is Media Expert's item number, the same value as the productID/sku in the product page's structured data. offer_id is the offer behind the product and is not accepted as a product id. |
| price | The shelf price in PLN, VAT included. It equalled the price in the product page's own structured data on every product checked. |
| code_price, promo_code, promo_valid_from, promo_valid_to, promo_active | The lower price Media Expert gives with a promo code at checkout, the code itself and the dates it runs. promo_active says whether today is inside those dates; Media Expert can still publish a code whose dates have passed. |
| app_price, app_promo_code | A price that only applies in the Media Expert mobile app, with its own code. Kept apart from the web prices. |
| omnibus_lowest_30d_price | The lowest price of the last 30 days that EU Omnibus rules require next to a promotion. Published only when Media Expert prints it. |
| was_price, member_price | was_price is the crossed-out price; member_price the club price. Both are often empty because Media Expert shows them on few products. |
| filter_price | The price the price_min / price_max range is compared against: the promo-code price while a code is active, otherwise the shelf price. A product shelf-priced above the range can therefore appear in it. |
| availability.stock_online, stock_store, stock_capped | Units Media Expert reports for delivery and for its stores. The source never reports more than 20, so 20 means 20 or more and stock_capped is true. |
| seller.type | retailer when Media Expert sells the product itself, marketplace when a third-party shop does, with the shop's name, link, rating count and minimum shipping cost. |
Prices from search equalled prices from product on 12 of 12 products. The product price, EAN and item number equalled the product page's own structured data on 8 of 8 products checked, 3 of them with an active promo code (the page's structured data carries the shelf price, not the code price). The same 4 products read from two different networks returned identical prices.
Real request and response JSON
Captured from the indexed primary action, search, on .
{
"method": "POST",
"url": "https://api.reefapi.com/mediaexpert/v1/search",
"headers": {
"x-api-key": "$REEF_KEY",
"content-type": "application/json"
},
"body": {
"query": "iphone 17",
"limit": 10
}
}{
"ok": true,
"meta": {
"api": "mediaexpert",
"endpoint": "search",
"mode": "live",
"latency_ms": 291.1,
"record_count": 10,
"bytes": 22824,
"cache_hit": false,
"upstream_requests": 1,
"total": 5000,
"search_mode": "keyword",
"charged_credits": 2,
"version": "0.1.0",
"request_id": "c6a794b243ce4267",
"queue_ms": 1.5,
"fetched_at": "2026-10-18T11:42:00.375Z"
},
"data": {
"results": [
{
"product_id": 8128287,
"offer_id": 2151746805,
"parent_id": 8128285,
"erp_id": "2095249",
"ean": "0195950627312",
"model": "IPHONE 17 PRO",
"brand": "APPLE",
"title": "Smartfon APPLE iPhone 17 Pro 5G 256GB 6.3\" 120Hz Kosmiczny pomarańcz",
"url": "https://www.mediaexpert.pl/smartfony-i-zegarki/smartfony/smartfon-apple-iphone-17-pro-5g-cosmic-orange-256gb",
"image": "https://prod-api.mediaexpert.pl/api/images/gallery_500_500/thumbnails/images/81/8128285/iPhone_17_Pro_Cosmic_Orange_PDP_Image_Position_1__pl-PL.jpg",
"currency": "PLN",
"price": 5349,
"price_net": 4348.78,
"was_price": null,
"discount_amount": null,
"discount_percent": null,
"omnibus_lowest_30d_price": null,
"code_price": null,
"promo_code": null,
"promo_valid_from": null,
"promo_valid_to": null,
"promo_active": null,
"promo_discount": null,
"hot_deal": null,
"app_price": null,
"app_promo_code": null,
"app_promo_valid_to": null,
"app_promo_active": null,
"member_price": null,
"filter_price": 5349,
"seller": {
"type": "retailer",
"id": "0",
"name": "Media Expert",
"url": null,
"min_shipping_price": null,
"delivery_info": "Dostępny",
"rating_count": null,
"recommended_percent": null
},
"availability": {
"status": "available",
"label": "Dostępny",
"description": "Dostępny od ręki",
"available_in_store": true,
"stock_online": 20,
"stock_store": 20,
"stock_capped": true
},
"rating": 4.8,
"review_count": 86,
"rating_scale": 5,
"category": {
"id": 13170,
"name": "Smartfony",
"url": "https://www.mediaexpert.pl/smartfony-i-zegarki/smartfony"
},
"category_ids": [
13170,
13168
],
"outlet": false,
"refurbished": false
},
{
"product_id": 8128371,
"offer_id": 2151746701,
"parent_id": 8128369,
"erp_id": "2095264",
"ean": "0195950638769",
"model": "IPHONE 17 PRO MAX",
"brand": "APPLE",
"title": "Smartfon APPLE iPhone 17 Pro Max 5G 256GB 6.9\" 120Hz Srebrny",
"url": "https://www.mediaexpert.pl/smartfony-i-zegarki/smartfony/smartfon-apple-iphone-17-pro-max-5g-silver-256gb",
"image": "https://prod-api.mediaexpert.pl/api/images/gallery_500_500/thumbnails/images/81/8128369/iPhone_17_Pro_Max_Silver_PDP_Image_Position_1__pl-PL.jpg",
"currency": "PLN",
"price": 6299.99,
"price_net": 5121.94,
"was_price": null,
"discount_amount": null,
"discount_percent": null,
"omnibus_lowest_30d_price": null,
"code_price": null,
"promo_code": null,
"promo_valid_from": null,
"promo_valid_to": null,
"promo_active": null,
"promo_discount": null,
"hot_deal": null,
"app_price": null,
"app_promo_code": null,
"app_promo_valid_to": null,
"app_promo_active": null,
"member_price": null,
"filter_price": 6299.99,
"seller": {
"type": "retailer",
"id": "0",
"name": "Media Expert",
"url": null,
"min_shipping_price": null,
"delivery_info": "Dostępny",
"rating_count": null,
"recommended_percent": null
},
"availability": {
"status": "available",
"label": "Dostępny",
"description": "Dostępny od ręki",
"available_in_store": true,
"stock_online": 2,
"stock_store": 2,
"stock_capped": false
},
"rating": 4.8,
"review_count": 60,
"rating_scale": 5,
"category": {
"id": 13170,
"name": "Smartfony",
"url": "https://www.mediaexpert.pl/smartfony-i-zegarki/smartfony"
},
"category_ids": [
13170,
13168
],
"outlet": false,
"refurbished": false
},
{
"product_id": 8128227,
"offer_id": 2151746557,
"parent_id": 8128225,
"erp_id": "2095223",
"ean": "0195950643459",
"model": "IPHONE 17",
"brand": "APPLE",
"title": "Smartfon APPLE iPhone 17 5G 256GB 6.3\" 120Hz Czarny",
"url": "https://www.mediaexpert.pl/smartfony-i-zegarki/smartfony/smartfon-apple-iphone-17-5g-black-256gb",
"image": "https://prod-api.mediaexpert.pl/api/images/gallery_500_500/thumbnails/images/81/8128225/iPhone_17_Black_PDP_Image_Position_1__pl-PL.jpg",
"currency": "PLN",
"price": 4399,
"price_net": 3576.42,
"was_price": null,
"discount_amount": null,
"discount_percent": null,
"omnibus_lowest_30d_price": null,
"code_price": null,
"promo_code": null,
"promo_valid_from": null,
"promo_valid_to": null,
"promo_active": null,
"promo_discount": null,
"hot_deal": null,
"app_price": null,
"app_promo_code": null,
"app_promo_valid_to": null,
"app_promo_active": null,
"member_price": null,
"filter_price": 4399,
"seller": {
"type": "retailer",
"id": "0",
"name": "Media Expert",
"url": null,
"min_shipping_price": null,
"delivery_info": "Dostępny",
"rating_count": null,
"recommended_percent": null
},
"availability": {
"status": "available",
"label": "Dostępny",
"description": "Dostępny od ręki",
"available_in_store": true,
"stock_online": 20,
"stock_store": 20,
"stock_capped": true
},
"rating": 4.9,
"review_count": 205,
"rating_scale": 5,
"category": {
"id": 13170,
"name": "Smartfony",
"url": "https://www.mediaexpert.pl/smartfony-i-zegarki/smartfony"
},
"category_ids": [
13170,
13168
],
"outlet": false,
"refurbished": false
}
],
"total": 5000,
"total_reachable": 1000,
"pages": 100,
"page": 1,
"limit": 10,
"sort": "relevance",
"has_more": true,
"page_clamped": false,
"query": "iphone 17",
"search_mode": "keyword",
"redirected_to": null
}
}What the Media Expert API does
| Action | Description | Concrete use case | Key params |
|---|---|---|---|
| search | Search mediaexpert.pl by keyword with the site's own price range (PLN), discounted-only switch and sort. Each row: product id, EAN, erp id, model, brand, title, URL, image, the shelf price, crossed-out price, EU Omnibus lowest-30-day price, promo-code price with its code and dates, app-only price, club price, seller (Media Expert or a marketplace seller), availability with online and store stock, store pickup, rating and review count, category. When Media Expert answers a keyword with a category page (e.g. 'pralka' → washing machines) the engine lists that category and says so in `redirected_to`. | Pricing teams call search to search mediaexpert.pl by keyword with the site's own price range (PLN), discounted-only switc…. | query, price_min, price_max, only_discounted, sort, ... |
| category | List one Media Expert category (e.g. washing machines, smartphones) with the same price, discount and sort options and the same rows as search. Give the category id or the category URL from mediaexpert.pl. An id that is not a real category is refused (Media Expert itself would answer it with the whole 2.2-million-product catalogue). | Marketplace operators call category to list one Media Expert category (e.g. | category_id, url, price_min, price_max, only_discounted, ... |
| product | The full Media Expert product record by product id, URL or erp id: every price type (shelf, crossed-out, Omnibus lowest-30-day, promo code with dates, app, club), EAN, model, brand, seller, online and store stock, store pickup, delivery options, instalment offer when published, grouped specifications, all images, breadcrumb, rating and review count. The long marketing description is a separate action (`description`) because Media Expert ships it with embedded images (up to 1.8 MB). | Catalog enrichment teams call product to get the full Media Expert product record by product id, URL or erp id. | product_id, url, erp_id |
| description | The long product description Media Expert shows under 'Opis', as plain text (HTML and the embedded images removed), by product id, URL or erp id. Separate from `product` because the source sends it with base64 images inside (measured up to 1.8 MB per product). | Retail analysts call description to get the long product description Media Expert shows under 'Opis', as plain text (HTML and the emb…. | product_id, url, erp_id |
Call search from your stack
curl -X POST https://api.reefapi.com/mediaexpert/v1/search \
-H "x-api-key: $REEF_KEY" \
-H "content-type: application/json" \
-d '{"query":"iphone 17","limit":10}'import requests
r = requests.post(
"https://api.reefapi.com/mediaexpert/v1/search",
headers={"x-api-key": REEF_KEY},
json={
"query": "iphone 17",
"limit": 10
},
)
print(r.json()["data"])const res = await fetch("https://api.reefapi.com/mediaexpert/v1/search", {
method: "POST",
headers: {
"x-api-key": process.env.REEF_KEY,
"content-type": "application/json",
},
body: JSON.stringify({
"query": "iphone 17",
"limit": 10
}),
});
const { ok, data, meta, error } = await res.json();Ask your MCP-connected assistant: call reefapi.mediaexpert.search with {"query":"iphone 17","limit":10}.Who uses this API and why
- Track Media Expert shelf prices, promo-code prices and Omnibus 30-day prices on electronics and appliances day by day.
- Match Media Expert products to other Polish retailers by EAN or model.
- Watch which promo codes run on which products and when they end.
- Find the cheapest products on promotion within a price range in one category.
- Separate products Media Expert sells itself from marketplace sellers' offers.
Questions developers ask before integrating
Do I need a Media Expert account?
No. Everything is read logged out, and you call reefapi.com from anywhere.
Which price is the real one?
All of them are real, they apply to different shoppers: price is the shelf price, code_price applies with the promo code shown next to it, app_price only in Media Expert's app, member_price for club members. omnibus_lowest_30d_price is the reference price the law requires during a promotion.
Do the filters work?
Yes, each was checked against the unfiltered count in the same run. Washing machines: 616 products, 1,000-2,000 zł 280, on promotion 208. Search 'iphone 17' between 3,000 and 5,000 zł returned 18 products. The price range is compared with the promo-code price when a code is active.
Why does my search return a category?
Media Expert sends some keywords straight to a category page (for example 'pralka' to washing machines). The API then lists that category and tells you in redirected_to and search_mode, rather than returning nothing.
How deep can I page?
Up to 100 pages. Search reports at most 5,000 matches; total_reachable tells you how many you can actually page through, and a page past the end returns no rows with page_clamped set.
Is stock by store included?
The record says whether the product is available in Media Expert stores and how many units the stores and the web shop report (capped at 20 by the source). Stock per individual store is not returned.
Are reviews included?
The average rating and the review count are on every product. The written reviews are not returned at present.
What is the Media Expert API?
Media Expert API is a ReefAPI endpoint group for poland's largest electronics and appliance retailer: pln shelf, promo-code, app and omnibus 30-day prices, stock, store pickup, ean and specs. It returns live JSON through POST requests under /mediaexpert/v1.
Is the Media Expert API free to try?
Yes. ReefAPI starts with 1,000 free credits, no card required. Media Expert calls use the same shared credit balance as every other ReefAPI engine.
Do I need a Media Expert login or account?
No login to Media Expert is needed for the API response. You call ReefAPI with your x-api-key header, and the playground can run live examples before you create a production key.
How fresh is the Media Expert data?
The page example is captured from a live search call, and production requests fetch live data through ReefAPI rather than a static sample.
How many credits does the Media Expert API use?
Media Expert actions currently cost 1-3 credits per successful call. Failed or blocked calls are free. All APIs draw from one credit pool.
Can I call Media Expert from an AI assistant or MCP client?
Yes. Connect ReefAPI once through MCP and your assistant can call mediaexpert actions with the same key, credit pool and JSON envelope used by normal REST requests.
Is the Media Expert API a Media Expert scraper?
It is the managed alternative to a DIY Media Expert scraper. Instead of building and maintaining your own scraper — proxies, headless browsers, captcha and constant breakage — you call one ReefAPI endpoint and get the same poland's largest electronics and appliance retailer: pln shelf, promo-code, app and omnibus 30-day prices, stock, store pickup, ean and specs back as clean JSON.