Currys APIcurrys.co.uk ↗
Retrieve live product listings, pricing, stock availability, and technical specifications from Currys.co.uk across electronics categories including phones and laptops.
What is the Currys API?
The Currys.co.uk API provides 4 endpoints to search and retrieve electronics product data from the UK's largest consumer electronics retailer. Use search_products to query across all categories by keyword, get_product_details to pull full technical specifications grouped by category, or list_mobile_phones to browse the phone catalog with paginated results including pricing, availability, payment options, and promotional offers.
curl -X GET 'https://api.parse.bot/scraper/8d2033de-f0a2-40c7-a815-1925c4b445eb/list_mobile_phones?limit=5&start=0' \ -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 currys-co-uk-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.
from parse_apis.currys_co_uk_products_api import Currys, Product, MobilePhone, Listing, Price, Availability, ProductNotFound
# Initialize the client
currys = Currys()
# Search for Samsung products
for product in currys.products.search(query="samsung", limit=5):
print(product.name, product.brand, product.url)
for price in product.price:
print(price.revenue, price.currency)
for avail in product.availability:
print(avail.stock_status, avail.availability_type)
# Get detailed product information by ID
detail = currys.products.get(product_id="10290129")
print(detail.name, detail.brand, detail.sku)
print(detail.full_specifications)
print(detail.promotions)
# List mobile phones
for phone in currys.mobilephones.list(limit=3):
print(phone.name, phone.brand, phone.url)
for price in phone.price:
print(price.revenue, price.currency)
# Search using the full page scraper for listings
for listing in currys.listings.search(query="laptop", limit=10):
print(listing.name, listing.price, listing.savings)
print(listing.specs, listing.image_url)
List products in the mobile phones category on Currys.co.uk. Returns paginated results with full product data including pricing, availability, payment options, and offers. Each product includes structured data from Currys' internal data layer. Paginate using the start offset; each page returns up to limit products.
| Param | Type | Description |
|---|---|---|
| limit | integer | Number of products to return per page. |
| start | integer | The starting index (offset) for pagination. |
{
"type": "object",
"fields": {
"limit": "integer - number of products requested per page",
"start": "integer - current pagination offset",
"products": "array of product objects with id, name, brand, price, availability, payment options, offers, and URLs",
"total_items": "integer - total number of products in the mobile phones category"
},
"sample": {
"data": {
"limit": 5,
"start": 0,
"products": [
{
"id": "10299101",
"url": "https://www.currys.co.uk/products/samsung-galaxy-s26-ultra-256-gb-cobalt-violet-10299101.html",
"name": "SAMSUNG Galaxy S26 Ultra - 256 GB, Cobalt Violet",
"brand": "SAMSUNG",
"price": [
{
"tax": 213.17,
"revenue": 1279,
"currency": "GBP",
"baseRevenue": 1279
}
],
"image_url": "https://media.currys.biz/i/currysprod/10299101?$g-small$&fmt=auto",
"availability": [
{
"stockStatus": "IN_STOCK",
"availabilityType": "Delivery available",
"availabilityStatus": "shipping"
}
]
}
],
"total_items": 20
},
"status": "success"
}
}About the Currys API
Product Search and Category Browsing
The search_products endpoint accepts a required query string (e.g., 'samsung', 'iphone', 'laptop') and optional limit and start parameters for pagination. It returns a products array alongside total_items, so you can walk through result pages using the start offset. Each product object includes id, name, brand, price, availability, payment options, offers, and a product URL. The list_mobile_phones endpoint mirrors this shape but is scoped to the mobile phones category, useful when you want category-specific inventory without constructing a search query.
Product Detail and Specifications
get_product_details takes a required product_id (the unique numeric identifier, e.g., '10290129') and an optional url. When a url is supplied, the endpoint fetches specifications directly from that page rather than resolving the URL first. The response includes a full_specifications object with technical specs grouped by category labels such as OVERVIEW, CAMERA, and SCREEN, making it straightforward to extract structured hardware attributes. The promotions field returns an array of current promotional strings, and availability includes stock status and shipping information.
General Search with Extended Pagination
list_mini_pc_products accepts a query string and a max_pages integer. Setting max_pages to 0 fetches all available pages, with 20 products returned per page. The response differs slightly from the other endpoints: each product object includes product_id, name, url, price, savings, specs, and image_url. The products_returned field tells you how many records were actually returned versus the total_items count reported by the search index.
Coverage Notes
All endpoints return UK-market data from currys.co.uk, including GBP pricing and UK stock status. The price field on detailed responses is an array of price objects containing baseRevenue, currency, revenue, tax, and offers, allowing you to distinguish base price from promotional pricing.
The Currys API is a managed, monitored endpoint for currys.co.uk — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when currys.co.uk 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 currys.co.uk 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?+
- Track price changes on specific products using
get_product_detailswith a storedproduct_id. - Compare mobile phone availability and payment options across the catalog using
list_mobile_phones. - Build a product feed for a price-comparison site using
search_productswith paginatedstartoffsets. - Extract technical specifications grouped by category (e.g., CAMERA, SCREEN) for product comparison tools.
- Monitor promotional offers and savings on a search term using
list_mini_pc_productswithmax_pages. - Collect brand-specific inventory by passing a brand name as the
querytosearch_products. - Aggregate UK electronics stock status for out-of-stock alerting using the
availabilityfield.
| 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 Currys have an official public developer API?+
What does the `full_specifications` field in `get_product_details` actually contain?+
product_id; the optional url parameter skips the URL-resolution step and can speed up the call if you already have the product page address.How does pagination work across the different endpoints?+
search_products and list_mobile_phones both use a start integer offset alongside limit to page through results; the total_items field tells you when you have reached the end. list_mini_pc_products uses a max_pages parameter instead, fetching 20 products per page, with 0 meaning fetch all pages. The two pagination models are not interchangeable.