# ASOS Price Monitoring API

> Monitor ASOS prices on the German, US and UK storefronts: price, retailPrice, priceSaving, per-size stock and sale events per product, on your schedule.

- URL: https://everydata.io/asos-price-monitoring-api
- Updated: 2026-10-28
- Publisher: everydata.io (https://everydata.io)

ASOS runs promotions differently from most fashion retailers: storefront-wide events such as "up to 70% off" or a 20%-off code, markdowns that arrive in one country weeks before another, and brand ranges sold by the brand itself whose prices follow the brand's calendar rather than ASOS's. A single-country price feed misses most of that. The everydata.io ASOS Price Monitoring API lets you re-poll the same product on the German, US and UK storefronts, capturing price, original price, saving, availability and per-size stock in EUR, USD and GBP, so you can see where a style is discounted first and how deep.

## Key facts

- Platform: [ASOS API](https://everydata.io/apis/asos) (live)
- Main endpoint: `GET /aso/lookup-product-details`
- Quota: A call to the ASOS API counts as 1 request against the monthly quota.
- Pricing: 100 free requests a month; paid plans from €30 a month for 5,000 requests (€1.00–€6.00 per 1,000 requests). One quota is shared across all 35 platforms; failed requests (5xx, blocked pages) are not counted.

## What you get

Each poll returns price and retailPrice in the storefront currency plus priceSaving, the reduction ASOS displays when an item is in a sale. available tells you whether the item can be bought at all – during an event, popular items go out of stock within hours and a price without stock is not a real price. soldBy and sellerId identify whether ASOS or a partner brand such as New Balance is selling, which explains why some items ignore ASOS-wide events.

For fashion-specific monitoring, the size dimension of variations lists every size with its own price, retailPrice and available flag, so you can watch a size run empty during a sale. Because colourways are separate ASOS products, add each colourway's URL to your watch list if you want the full style covered.

- price, retailPrice and priceSaving per storefront – EUR on /de, USD on /us, GBP on /co.uk
- available and per-size stock flags to separate real price drops from sold-out listings
- soldBy and sellerId to tell ASOS-priced items from brand-priced ranges
- domainCode and currency echoed on every response for clean multi-country storage
- used flag to exclude pre-owned resale listings from new-price statistics
- cacheTtl from 0 to 86400 seconds to tune cost against freshness per product

## How it works

ASOS has no history endpoint on everydata.io. Monitoring means calling GET /aso/lookup-product-details for every product-storefront pair on your list on a schedule and appending the result to your own store. The example below is the pricing subset of the product response for the German storefront.

```bash
curl -s "https://api.everydata.io/aso/lookup-product-details?url=https%3A%2F%2Fwww.asos.com%2Fde%2Fprd%2F204936689&cacheTtl=1800" \
  -H "x-api-key: YOUR_API_KEY"
```

Response (shortened):

```json
{
  "responseStatus": "PRODUCT_FOUND_RESPONSE",
  "productTitle": "New Balance – 530 – Unisex-Sneaker in Wollweiß und Beige",
  "manufacturer": "New Balance",
  "productId": "204936689",
  "variationId": "204936690",
  "soldBy": "New Balance",
  "sellerId": "NBA",
  "warehouseAvailability": "Auf Lager.",
  "retailPrice": 120,
  "price": 120,
  "priceSaving": "",
  "shippingPrice": 0,
  "currency": "EUR",
  "domainCode": "de",
  "available": true,
  "used": false,
  "variations": [
    {
      "variationName": "size",
      "values": [
        {
          "value": "EU 36",
          "asin": "204936694",
          "available": true,
          "price": 120,
          "retailPrice": 120
        },
        {
          "value": "EU 37",
          "asin": "204936699",
          "available": true,
          "price": 120,
          "retailPrice": 120
        }
      ]
    }
  ]
}
```

Build history as one row per poll, storefront and size: observed_at, productId, domainCode, currency, price, retailPrice, priceSaving, available, and the size variant ID with its own flag. Joining rows on productId across domainCode gives you the cross-country view; grouping by date gives you the event timeline. priceSaving is an empty string at full price, so normalise it to 0 before charting.

For cadence, ASOS sale events usually start at fixed times and item prices then hold for the event's duration, so a poll every 6–12 hours per storefront captures the shape of an event; stock, however, moves within hours on popular sizes, so poll hot items more often with cacheTtl=0 and let the long tail share cached pages with cacheTtl=1800 or higher.

Percentage-off codes applied at checkout are not part of the product page and therefore not in the response – record them separately alongside your observations if you want the effective price. A 404 means the product has been removed from that storefront; keep the row as an end-of-life marker.

## What teams build with this

### Cross-storefront markdown timing

Watch a style on /de, /us and /co.uk and record which storefront discounts first and by how much – useful for brands deciding where to route their own promotions.

### Sale-event impact analysis

Poll a basket of items through an ASOS event to measure how many were actually reduced, how deep, and which sizes sold out before the event ended.

### Brand price-compliance checks

Brands that sell through ASOS compare the observed price with their agreed price floor per country and use soldBy to distinguish their own range from ASOS-owned stock.

### Stock-back-in-stock alerts

Track the per-size available flags and notify shoppers or buyers when a specific size returns at a given price.

## Pricing

Each poll of one product on one storefront is one request. Monitoring 300 products on all three storefronts twice a day is 1,800 requests daily or roughly 54,000 a month – just over Production (50,000, €80), so Business (300,000 requests, €300) fits with room to grow; requests stop at the monthly quota and you can upgrade any time (prorated). Upstream 5xx responses are not charged.

## FAQ

### Do you keep a price history for ASOS products?

No. everydata.io returns the live product page; you build the history by polling on a schedule and storing each observation. The pricing fields are numeric and stable, so this is a few columns per row.

### How do I monitor the same product in several countries?

Add one URL per storefront to your watch list – for example /de/prd/204936689, /us/prd/204936689 and /prd/204936689 for the UK. Each response carries domainCode and currency.

### Are checkout discount codes reflected in the price?

No. The API returns the price shown on the product page. Event codes applied in the basket are not visible there and need to be recorded separately.

### How often should I poll?

Every 6–12 hours per storefront covers ASOS's event rhythm; poll popular sizes more often because stock moves faster than price. Use cacheTtl to lower cost on items that rarely change.

### Can I monitor individual sizes?

Yes. Each size in the variations array has its own price, retailPrice, available flag and variant ID, so a size can be tracked independently of the product header.

## Related use cases

- [ASOS Product Data API](https://everydata.io/asos-product-data-api)
- [ASOS Search API](https://everydata.io/asos-search-api)
- [Zalando Price Monitoring API](https://everydata.io/zalando-price-monitoring-api)
- [Amazon Price Tracker & Price History API](https://everydata.io/amazon-price-tracker-api)
- [Lidl Price Monitoring API](https://everydata.io/lidl-price-monitoring-api)

## More

- [All platforms](https://everydata.io/apis) · [Pricing](https://everydata.io/pricing) · [API reference](https://everydata.io/docs) · [Getting started](https://everydata.io/docs/getting-started) · [MCP server](https://everydata.io/docs/mcp) · [Status](https://everydata.io/status)
- Machine-readable: [llms.txt](https://everydata.io/llms.txt), [llms-full.txt](https://everydata.io/llms-full.txt), [OpenAPI](https://api.everydata.io/openapi.json)
