# Asos.com Scraper (`scrapemind/asos-com-scraper`) Actor

Scrape search results from Asos.com fast and cheaply on resources used.

- **URL**: https://apify.com/scrapemind/asos-com-scraper.md
- **Developed by:** [ScrapeMind](https://apify.com/scrapemind) (community)
- **Categories:** E-commerce, Integrations
- **Stats:** 11 total users, 1 monthly users, 100.0% runs succeeded, 1 bookmarks
- **User rating**: No ratings yet

## Pricing

$25.00/month + usage

To use this Actor, you pay a monthly rental fee to the developer. The rent is subtracted from your prepaid usage every month after the free trial period. You also pay for the Apify platform usage, which gets cheaper the higher Apify subscription plan you have.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#rental-actors

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
The best way to integrate Actors is as follows.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).

# README

## ASOS Search Scraper Actor

***

### Asos Search Scraper

This Apify Actor scrapes search results from ASOS.com based on the search query you provide. You can specify where to start and where to stop in the search results.

### Input Parameters

The Actor accepts the following input parameters:

- search\_query (required): The search query string. This is the term you want to search for on ASOS.
- start (optional): The index of the item to start scraping from. Defaults to 0.
- last\_items (optional): The index of the item to stop scraping at. If not provided, scraping will continue until the last item.

#### Example Input

```json
{
  "search_query": "shoes",
  "start": 0,
  "last_items": 10
}
```

In this example, the Actor will start scraping from the first item and stop at the 10th item.

### How It Works

1. Initialization: The Actor initializes with the search query q and the optional start and last\_items parameters.
2. Pagination: The Actor navigates through the search results pages to gather items.
3. Data Extraction: For each item in the specified range, the Actor extracts relevant information such as item title, price, URL, and image.
4. Result Output: The extracted data is output to the dataset

#### Output

The output is a JSON array of objects, each representing a product with the following fields:

- **`id`**
  - **Type**: `integer`
  - **Description**: Unique identifier for the product.
  - **Example**: `206382728`
- `name`
  - **Type**: `string`
  - **Description**: The name of the product.
  - **Example**: `"Topshop bardot wrap top in red"`
- `price`
  - **Type**: `object`
  - **Description**: Contains pricing details for the product.
    - **`current`:**
      - **Type**: `object`
      - **Description**: Current price of the product.
      - **Properties**:
        - **`value`:** `number`
          - **Description**: Numeric value of the current price.
          - **Example**: `21`
        - **`text`: `string`**
          - **Description**: Textual representation of the current price.
          - **Example**: `"£21.00"`
    - **`previous`:**
      - **Type**: `object`
      * **Description**: Previous price of the product.
      * **Properties**:
        - **value**: `number`
          - **Description**: Numeric value of the previous price.
          - **Example**: `28`
        - **text**: `string`
          - **Description**: Textual representation of the previous price.
          - **Example**: `"£28.00"`
    - **`rrp`:**
      - **Type**: `object`
      - **Description**: Recommended retail price, if available.
      - **Properties**:
        - **value**: `null` or `number`
          - **Description**: Numeric value of the RRP, or null if not available.
          - **Example**: null
        - **text**: `string`
          - **Description**: Textual representation of the RRP.
          - **Example**: `""` (empty string)
  - **`isMarkedDown`**:
    - **Type**: `boolean`
    - **Description**: Indicates whether the product is currently marked down.
    - **Example**: `true`
  - **`isOutletPrice`**:
    - **Type**: `boolean`
    - **Description**: Indicates if the price is an outlet price.
    - **Example**: `false`
  - **`currency`:**
    - **Type**: `string`
    - **Description**: Currency in which the price is listed.
    - **Example**: `"GBP"`
- **`url`**
  - **Type**: `string`
  - **Description**: URL for the product's page on the retailer's website.
  - **Example**: "`topshop/topshop-bardot-wrap-top-in-red/prd/206382728#colourWayId-206382729"`
- **`imageUrl`**
  - **Type**: `string`
  - **Description**: URL of the main image for the product.
  - **Example**: "`images.asos-media.com/products/topshop-bardot-wrap-top-in-red/206382728-1-red"`
- **`additionalImageUrls`**
  - **Type**: `array` of `string`
  - **Description**: URLs of additional images of the product.
  - **Example**:
  ```json
  [
    "images.asos-media.com/products/topshop-bardot-wrap-top-in-red/206382728-2",
    "images.asos-media.com/products/topshop-bardot-wrap-top-in-red/206382728-3",
    "images.asos-media.com/products/topshop-bardot-wrap-top-in-red/206382728-4"
  ]
  ```

#### Example Output

```json
[
{
  "id": 206382728,
  "name": "Topshop bardot wrap top in red",
  "price": {
    "current": {
      "value": 21,
      "text": "£21.00"
    },
    "previous": {
      "value": 28,
      "text": "£28.00"
    },
    "rrp": {
      "value": null,
      "text": ""
    },
    "isMarkedDown": true,
    "isOutletPrice": false,
    "currency": "GBP"
  },
  "colour": "",
  "colourWayId": 206382729,
  "brandName": "Topshop",
  "hasVariantColours": false,
  "hasMultiplePrices": false,
  "groupId": null,
  "productCode": 135048803,
  "productType": "Product",
  "url": "topshop/topshop-bardot-wrap-top-in-red/prd/206382728#colourWayId-206382729",
  "imageUrl": "images.asos-media.com/products/topshop-bardot-wrap-top-in-red/206382728-1-red",
  "additionalImageUrls": [
    "images.asos-media.com/products/topshop-bardot-wrap-top-in-red/206382728-2",
    "images.asos-media.com/products/topshop-bardot-wrap-top-in-red/206382728-3",
    "images.asos-media.com/products/topshop-bardot-wrap-top-in-red/206382728-4"
  ],
  "videoUrl": null,
  "showVideo": false,
  "isSellingFast": false,
  "isRestockingSoon": false,
  "isPromotion": false,
  "sponsoredCampaignId": null,
  "facetGroupings": [],
  "advertisement": null
},
]
```

#### Usage

To use this Actor, follow these steps:

1. Create an Apify account: If you don't already have one, sign up at Apify.
2. Create a new Actor: Go to the Actors section and create a new Actor.
3. Configure the Actor: Use the provided code and configure the input parameters.
4. Run the Actor: Start the Actor and review the results in your Apify account.

For more information on how to set up and use Apify Actors, refer to the [Apify documentation.](https://docs.apify.com/)

# Actor input Schema

## `search_query` (type: `string`):

search you need to scrape

## `start` (type: `integer`):

if start not provide all products will get scraped

## `last_item` (type: `integer`):

the last item will stop at if not provided will scrape all products available in the search query

## `proxyConfiguration` (type: `object`):

Proxy settings. Use Apify Proxy with residential IPs to avoid blocks.

## Actor input object example

```json
{
  "search_query": "top",
  "start": 0,
  "last_item": 1000,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  }
}
```

# Actor output Schema

## `dataset` (type: `string`):

Dataset containing all scraped product data

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "search_query": "top",
    "proxyConfiguration": {
        "useApifyProxy": true,
        "apifyProxyGroups": [
            "RESIDENTIAL"
        ]
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("scrapemind/asos-com-scraper").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "search_query": "top",
    "proxyConfiguration": {
        "useApifyProxy": True,
        "apifyProxyGroups": ["RESIDENTIAL"],
    },
}

# Run the Actor and wait for it to finish
run = client.actor("scrapemind/asos-com-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "search_query": "top",
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  }
}' |
apify call scrapemind/asos-com-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,scrapemind/asos-com-scraper"
        }
    }
}

```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/3pydlG0L8TGFXz6JR/builds/AMxdvkyPU8aSLJ2gO/openapi.json
