Currys UK Scraper - Products, Prices, Stock & Reviews avatar

Currys UK Scraper - Products, Prices, Stock & Reviews

Pricing

from $1.20 / 1,000 product results

Go to Apify Store
Currys UK Scraper - Products, Prices, Stock & Reviews

Currys UK Scraper - Products, Prices, Stock & Reviews

Scrape Currys UK electronics by keyword or URL. Extract prices, brands, stock status, EANs, descriptions, full image galleries and customer reviews. Supports automatic forward pagination for efficient catalogue scraping.

Pricing

from $1.20 / 1,000 product results

Rating

0.0

(0)

Developer

Abot API

Abot API

Maintained by Community

Actor stats

1

Bookmarked

2

Total users

1

Monthly active users

3 hours ago

Last modified

Categories

Share

Currys UK Scraper: products, prices, and reviews

Scrape currys.co.uk electronics listings with price, brand, stock state, EAN, full photo gallery, description, and customer reviews. Search by keyword or paste category and search URLs, with automatic forward pagination.

Why This Scraper?

  • Two ways in. Keyword search, or paste search and category URLs directly.
  • Rich product data. Brand, current price, stock state, EAN/GTIN, category path, and the full high-resolution photo gallery.
  • Customer reviews included. Pull each product's own customer reviews, rating, text, author, and date, as a separate toggle.
  • Client-side filters. Narrow by price range and in-stock status without extra requests.
  • Multi-category coverage. TVs, laptops, mobiles, appliances, and every other category the site carries, all through one actor.
  • Predictable output caps. One clear limit on total products per run, with pagination following automatically.

Use Cases

  • Price monitoring: track current and historical prices across electronics categories for competitive analysis.
  • Market research: compare brand and category coverage across a major UK electronics retailer.
  • Review analysis: collect customer ratings and review text to gauge product sentiment.
  • Stock tracking: monitor which products are in stock versus out of stock over time.
  • Catalog enrichment: pull structured product data (EAN, brand, category) to enrich an existing product database.

Data You Get

Sample shape: values are illustrative placeholders, not from a live record.

FieldExample
id"10000001"
sku"000001"
url"https://www.currys.co.uk/products/sample-product-0000000-10000001.html"
title"Sample Brand 40\" Smart Full HD HDR LED TV"
brand"SAMPLE BRAND"
price199.99
currency"GBP"
availabilityStatus"InStock"
categories["TV & Audio", "Televisions", "TVs"]
ean"0000000000000"
rating4.6
reviewCount29
description"Sample product description text appears here when details are fetched."
images["https://media.currys.biz/i/currysprod/00000000?$l-large$"]
priceValidUntil"2026-12-31"

When "Fetch customer reviews" is on, each product also carries a reviews array (one entry per review: rating, review, author, authorLocation, date).

How to Use

  1. Pick a mode: Search to type keywords, or URL to paste currys.co.uk search/category links.
  2. Fill in the matching fields (keywords, or URLs).
  3. Set Max total products to control run size and cost; adjust Max pages if needed.
  4. Run the actor, then view or export results from the Dataset tab.

Search by keyword:

{
"mode": "search",
"queries": ["tv", "laptop"],
"maxListings": 40,
"fetchDetails": true
}

Search with price and stock filters:

{
"mode": "search",
"queries": ["washing machine"],
"minPrice": 200,
"maxPrice": 600,
"inStockOnly": true,
"maxListings": 20
}

URL mode with reviews:

{
"mode": "url",
"urls": ["https://www.currys.co.uk/search?q=headphones"],
"fetchDetails": true,
"fetchReviews": true,
"maxReviewsPerProduct": 10,
"maxListings": 10
}

Run it from your code

from apify_client import ApifyClient
client = ApifyClient("<YOUR_API_TOKEN>")
run = client.actor("abotapi/currys-co-uk").call(run_input={
"mode": "search",
"queries": ["tv"],
"maxListings": 20,
})
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
print(item)
import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: '<YOUR_API_TOKEN>' });
const run = await client.actor('abotapi/currys-co-uk').call({
mode: 'search',
queries: ['tv'],
maxListings: 20,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);

You can also trigger runs and pipe results into Make, Zapier, n8n, Google Sheets, or a webhook from the actor's Integrations tab.

Tips:

  • Max total products is the one cap that matters; Max pages defaults wide open so it never silently cuts you off before the cap is reached.
  • Reviews are fetched per product only when "Fetch customer reviews" is on, since each product costs an extra request.
  • For a daily or weekly schedule, turn on Incremental changes for scheduled runs instead of re-paying for the same products every time.

Resume and recurring updates

Two different features for two different needs:

  • Resume from a previous run: paste a run ID or dataset ID to continue a large, interrupted walk across separate runs. Products already saved there are skipped, so you only pay for the new ones.
  • Incremental changes for scheduled runs: turn this on when you run the same search on a schedule (daily, weekly). The first run returns everything as NEW. Every later run returns only NEW, UPDATED, and REAPPEARED products by default, each tagged with a changeType and (for UPDATED) a changedFields list. Turn on "Emit unchanged products" or "Emit expired products" if you also want those rows (both are billed, since they're still rows you receive). Minor fields that change on their own (review count, rating, the rolling price-valid-until date, the review list itself) are excluded from change detection by default, so a product isn't flagged UPDATED just because one more review came in.

Send results into your apps (MCP connectors)

Optionally pipe results straight into Notion, Linear, Airtable, or another MCP-compatible app as the run finishes. Authorize a connector once under Apify, Settings, Integrations, then select it in the "Export to your apps" section of the input. For Notion, also set the parent page. The connector receives a condensed, human-readable summary per item (title, price, availability, a few key fields), not the full JSON; the complete record always stays in the dataset. Leave this empty to skip it entirely; it never changes the dataset output either way.

Input Parameters

ParameterTypeDefaultDescription
modeStringsearchsearch to use keywords, url to paste links.
queriesArray["tv"]Keywords to search for (Search mode).
minPriceInteger-Only keep products at or above this price.
maxPriceInteger-Only keep products at or below this price.
inStockOnlyBooleanfalseOnly keep in-stock products.
sortByStringRelevanceRelevance, PriceAsc, or PriceDesc.
urlsArray-currys.co.uk search/category URLs (URL mode).
fetchDetailsBooleantrueVisit each product's detail page for description, EAN, and full photo gallery.
fetchReviewsBooleanfalseFetch each product's customer reviews.
maxReviewsPerProductInteger20Cap on reviews fetched per product.
maxPagesInteger500Max result pages to walk per search/URL.
maxListingsInteger20Hard cap on total products for the run. 0 = unlimited.
resumeFromRunIdString-A previous run ID or dataset ID to continue a large walk across separate runs.
incrementalModeBooleanfalseTurn on for recurring runs of the same search; only returns what changed.
stateKeyString-Optional name for the incremental-mode monitoring campaign.
emitUnchangedBooleanfalseAlso return unchanged products (incremental mode).
emitExpiredBooleanfalseAlso return products no longer found (incremental mode).
ignoreFieldsForChangesArray-Extra field names to exclude from change detection (incremental mode).
proxyObjectResidential, GBConnection settings; the actor manages its own connection tiers internally.
mcpConnectorsArray-MCP connector IDs to export results to (optional).
notionParentPageUrlString-Notion parent page for the Notion connector.
maxNotifyListingsInteger50Cap on items exported per connector.

Output Example

Sample shape: values are illustrative placeholders, not from a live record.

{
"id": "10000001",
"sku": "000001",
"url": "https://www.currys.co.uk/products/sample-product-0000000-10000001.html",
"title": "Sample Brand 40\" Smart Full HD HDR LED TV",
"brand": "SAMPLE BRAND",
"price": 199.99,
"currency": "GBP",
"availabilityStatus": "InStock",
"categories": ["TV & Audio", "Televisions", "TVs"],
"ean": "0000000000000",
"rating": 4.6,
"reviewCount": 29,
"description": "Sample product description text appears here when details are fetched.",
"images": ["https://media.currys.biz/i/currysprod/00000000?$l-large$"],
"priceValidUntil": "2026-12-31",
"reviews": [
{
"rating": 5,
"review": "Sample review text goes here.",
"author": "Sample Author",
"authorLocation": "GBR",
"date": "2026-01-01T00:00:00.000Z"
}
]
}

Plan Requirement

This actor runs on any Apify plan. Results and run time scale with how many products you request.

FAQ

How much does it cost?

You pay per result; check the Pricing tab on this actor's Store page for the current rate. Use Max total products to control run size and cost.

This actor collects publicly available data. You are responsible for using the output in line with currys.co.uk's terms, applicable privacy law (such as GDPR or CCPA), and any other regulations that apply to your use case. Avoid collecting personal data unless you have a lawful basis to do so.

Why did a run return fewer results than I expected?

Some searches return fewer than Max total products if the search itself has fewer matching products, or if your price/stock filters removed some results after fetching. Try widening the filters or raising Max pages.

Can I get only new or changed products on a schedule?

Yes. Turn on Incremental changes for scheduled runs and schedule the actor (e.g. daily). The first run returns everything as NEW; every later run returns only NEW, UPDATED, and REAPPEARED products by default, so you're not billed again for products that haven't changed.

Why did my run fail instead of returning an empty dataset?

A failed run usually means the upstream site rejected the connection for that attempt. Run again shortly; most failures are transient.

Can I use it with AI agents or MCP?

Yes. You can call this actor from any MCP-compatible client or agent framework via the Apify API, as shown in "Run it from your code" above.

๐Ÿ”— Want more electronics data?

Pair this actor with these related scrapers from the same team:

๐Ÿ”Œ Appliances Online Scraper
Scrape appliancesonline.com.au by category, keyword, or URL. Extract title, brand, AUD...
๐Ÿท๏ธ Avito.ru Scraper
From $1/1K. Scrape structured listings from Avito.ru by region, category, filters, or...
๐Ÿ”Œ Bic Camera Scraper
Scrape Bic Camera (biccamera.com) products: JPY price, list price and discount, Bic Point...
๐Ÿ”Œ Boulanger.com
Scrape Boulanger (boulanger.com) electronics and home-appliance products: current price...
๐Ÿ”Œ Casas Bahia Brazil Electronics & Home Goods Scraper
Scrape products from Casas Bahia Brazil by keyword, department, or URL. Filter by brand...
๐Ÿ”Œ Darty Scraper
Scrape Darty (darty.com) products: current price plus strike-through reference price and...

๐Ÿ‘‰ Browse all abotapi scrapers

๐Ÿ’ฌ Support & custom scrapers

  • ๐Ÿž Found a bug or a missing field? Open a ticket on the Issues tab. We usually reply within hours.
  • ๐Ÿ› ๏ธ Need another site, extra fields or a private build? Email contact@abotapi.com or message Telegram @abotapi.
  • โญ Enjoying it? A quick review on the actor page helps other users find it.