# American Eagle & Aerie Scraper: Prices and Sizes (`mrbridge/american-eagle-scraper`) Actor

Scrape ae.com (American Eagle and Aerie, US store) into one clean row per product colour. Get list and sale prices, discount percent, clearance flags, colour variants, images and per-size data from category URLs, product URLs or the full catalogue. Export to JSON, CSV or Excel.

- **URL**: https://apify.com/mrbridge/american-eagle-scraper.md
- **Developed by:** [MrBridge](https://apify.com/mrbridge) (community)
- **Categories:** E-commerce, Business
- **Features:** Limited permissions
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.20 / 1,000 products

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

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

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
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.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## 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.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

## American Eagle Scraper

American Eagle Scraper reads product data from ae.com, the US store of American Eagle and Aerie, and returns one clean row per product colour. Give it category or product URLs, or let it read the whole product sitemap, and get names, list and sale prices, discount percent, clearance and sold-out flags, colour variants, images and sizes. Export to JSON, CSV or Excel, with no API key and no HTML parsing on your side.

**Status:** validated on the Apify platform. A 15-product run usually takes under 30 seconds, a category of 184 products about 65 seconds, and the whole catalogue (9,505 products) about 17 minutes. See [How long does a run take?](#how-long-does-a-run-take).

Paste a category URL such as `https://www.ae.com/us/en/c/women/bottoms/jeans/cat6430042` and get back one row for every colour of every jean on the page, each with its list price, sale price, discount percent and per-size prices. Run it on a schedule and you have a price and markdown tracker for a whole department.

### What is American Eagle Scraper?

American Eagle Scraper turns ae.com category pages, product pages or the full product catalogue into a structured Apify dataset. It covers both brands sold on ae.com, American Eagle and Aerie, and the `brand` field tells them apart (`AE`, `Aerie` and `OFFLINE`). The only source it reads is the US English store (`us/en`).

American Eagle Scraper supports the following:

- **Scrape categories**: a category URL expands to every product colour listed in it. The Actor reads the category listing page by page (30 products per page) until `maxProducts` is reached.
- **Scrape single products**: a product URL returns the row of that colour.
- **Read the full catalogue**: switch on `fullCatalogue` to read the US product sitemap, 9,510 product pages on 2026-10-28.
- **One row per colour**: the same style in three colours gives three rows, linked by `styleId` and `colorVariants`.
- **Price and markdown data**: list price, sale price, discount percent and the clearance flag on every row.
- **Sizes by default**: size label, size code, SKU, prices and the stock level code of each size. `includeSizes` is on unless you switch it off.
- **Description on request**: description, detail lines, material and care lines, and fit lines.

#### What data can I extract with American Eagle Scraper?

| Group | Example fields |
|---|---|
| Identity | `productId`, `styleId`, `colorId`, `name`, `brand`, `gender`, `colorName`, `url` |
| Prices | `currency`, `listPrice`, `salePrice`, `discountPercent` |
| Status | `isClearance`, `isSoldOut`, `onlineOnly`, `badges`, `marketingMessage`, `promotions` |
| Catalogue | `categoryPath`, `colorVariants`, `images` |
| Sizes (optional) | `sizes[]` with `size`, `sizeCode`, `skuId`, `listPrice`, `salePrice`, `stockLevel` |
| Description (optional) | `description`, `details`, `materials`, `fit` |
| Run metadata | `locale`, `sourceUrl`, `scrapedAt` |

#### Where does the data come from?

Each product row is built from the public product data that ae.com loads in the browser. No account and no credentials are required on your side. The Actor asks for that data first. If a request is blocked, it retries, and as a last resort it reads the product page. This page fallback is capped at 5% of the products started in the run, and never below 20 pages. Past the cap the run stops cleanly instead of reading a whole catalogue the slow way. The `OUTPUT` record tells you how many rows came from each source. On the full catalogue run, 99.9% of the rows came from the product data and 0.08% from the page fallback.

#### How can I use data scraped from ae.com?

- **Price monitoring**: track the list and sale price of a category from one run to the next and see which items moved.
- **Markdown tracking**: follow `discountPercent` and `isClearance` to spot when a style goes on sale and how deep the discount goes.
- **Resellers**: check current prices, colours and sizes before buying stock or listing a product on a marketplace.
- **Affiliates and deal sites**: build product feeds with names, images, prices and links back to ae.com.
- **Market research**: compare assortments, price points and colour ranges across departments and brands.

### How to use American Eagle Scraper

Here's how to use American Eagle Scraper in 5 steps:

1. Create a free [Apify account](https://apify.com/sign-up) using your email.
2. Open [American Eagle Scraper](https://apify.com/mrbridge/american-eagle-scraper).
3. Add one or more category or product URLs to **Start URLs**, or switch on **Full catalogue**. Set **Max products** to cap the run.
4. Click the **Start** button and wait for the data to be extracted.
5. Download your data in JSON, XML, CSV, Excel or HTML.

### How much will scraping ae.com cost you?

American Eagle Scraper uses a **pay-per-event** pricing model.

- **Product**: one event is charged for each product colour row saved to the dataset, with or without sizes and description.
- **Actor Start**: the standard Apify event, charged once for every run.
- **Error rows are never charged.** A row carrying `_error: true` is written to the separate `errors` dataset and does not trigger the Product event.

The `product` event costs 0.002 USD per product without discount, which is 2 USD for 1,000 products. Subscription tiers lower the price, down to 0.0012 USD per product. Prices can change, so check the [Pricing tab](https://apify.com/mrbridge/american-eagle-scraper/pricing) for the current grid. At the undiscounted price, a full catalogue run of 9,505 products (the size measured on 2026-10-28) comes to about 19.01 USD.

You can cap the spend of any single run from the Apify Console with `ACTOR_MAX_TOTAL_CHARGE_USD`, and the `maxProducts` input gives you a hard limit on how many rows are saved and billed. When the cap is reached, the run stops cleanly and saves no further row.

### ⬇️ Input

The input is a JSON object that says where to read products from, plus a few options. See the [Input tab](https://apify.com/mrbridge/american-eagle-scraper/input-schema) for the full schema with all fields and defaults.

| Field | Type | Default | What it does |
|---|---|---|---|
| `startUrls` | array | none | Product pages (`https://www.ae.com/us/en/p/.../0000_0000_000`, or the same link without `/us/en`, as `https://www.ae.com/p/.../0000_0000_000`, which is read as the `/us/en/p/` form) or category pages (`https://www.ae.com/us/en/c/.../cat0000000`) of the US store. `http:` links are accepted. Ignored when `fullCatalogue` is on. |
| `fullCatalogue` | boolean | `false` | Ignore `startUrls` and read the US product sitemap. `maxProducts` still applies: set it to about 10,000 to read the whole catalogue (9,510 sitemap pages on 2026-10-28). |
| `maxProducts` | integer | `100` | Hard cap on the number of rows saved and billed in one run. Minimum 1. |
| `includeSizes` | boolean | `true` | Add the `sizes[]` list to each row. |
| `includeDescription` | boolean | `false` | Add `description`, `details`, `materials` and `fit` to each row. |
| `locale` | string | `us/en` | Store locale. Only `us/en` is available. |

#### American Eagle Scraper input examples

Scrape a category. This is the prefilled example of the Input tab (a women's jeans category, 15 products):

```json
{
  "startUrls": [
    {
      "url": "https://www.ae.com/us/en/c/women/bottoms/jeans/cat6430042"
    }
  ],
  "maxProducts": 15
}
```

Options you leave out take their defaults: `includeSizes` on, `includeDescription` off, `fullCatalogue` off, `locale` `us/en`.

Scrape the whole catalogue, without sizes, capped at 5,000 rows:

```json
{
  "fullCatalogue": true,
  "maxProducts": 5000,
  "includeSizes": false
}
```

Give either `startUrls` or `fullCatalogue`. A run with neither returns an error row and finishes without data. An invalid URL produces an error row for that URL and the run carries on with the others. A product that appears twice (in two categories, or in a category and in the start URLs) gives one row. Duplicate start URLs are counted in `OUTPUT.duplicateStartUrls`.

#### Calling the Actor from the API

Use `apify-client` for Node.js or Python to start a run and read the dataset. Python example:

```python
from apify_client import ApifyClient

client = ApifyClient("<YOUR_APIFY_TOKEN>")
run = client.actor("mrbridge/american-eagle-scraper").call(
    run_input={
        "startUrls": [{"url": "https://www.ae.com/us/en/c/women/bottoms/jeans/cat6430042"}],
        "maxProducts": 50,
    }
)
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item["name"], item["colorName"], item["salePrice"])
```

### ⬆️ Output

American Eagle Scraper stores results in a dataset, one row per product colour. Optional keys follow the input: `sizes` is present only when `includeSizes` is on, and `description`, `details`, `materials` and `fit` only when `includeDescription` is on. When the site does not publish a value, the key is present with `null`.

#### Dataset views

The Output tab offers three views.

| View | What it shows |
|---|---|
| `overview` | Name, colour, brand, gender, currency, list price, sale price, discount percent, clearance, sold out, URL |
| `prices` | Product ID, name, colour, currency, list price, sale price, discount percent, clearance, badges, marketing message, scrape time |
| `sizes` | Product ID, name, colour, sold out, and the `sizes` array |

#### Sample output

A real row from a product page, with every option on. It is generated by the Actor's own row mapping from a captured page of the Men's Clearance jackets, and shortened for this page: only the first entries of `categoryPath`, `colorVariants`, `images`, `sizes`, `details`, `materials` and `fit` are shown.

```json
{
  "productId": "0101_1891_410",
  "styleId": "0101_1891",
  "colorId": "410",
  "name": "AE x Umbro Warm-Up Jacket",
  "brand": "AE",
  "gender": "Men",
  "colorName": "Navy",
  "url": "https://www.ae.com/us/en/p/men/tops/jackets-coats/ae-x-umbro-warm-up-jacket/0101_1891_410",
  "sourceUrl": "https://www.ae.com/us/en/c/men/jackets-coats/cat6430044",
  "categoryPath": [
    "Men's Clearance",
    "Tops",
    "Jackets & Coats"
  ],
  "currency": "USD",
  "listPrice": 69.95,
  "salePrice": 27.98,
  "discountPercent": 60,
  "isClearance": true,
  "isSoldOut": false,
  "onlineOnly": false,
  "badges": [
    "realgood",
    "onlyat"
  ],
  "marketingMessage": "Limited-Edition Exclusive",
  "promotions": [],
  "colorVariants": [
    {
      "productId": "0101_1891_600",
      "colorName": "Red",
      "url": "https://www.ae.com/us/en/p/men/clearance/tops/jackets-coats/ae-x-umbro-warm-up-jacket/0101_1891_600"
    },
    {
      "productId": "0101_1891_410",
      "colorName": "Navy",
      "url": "https://www.ae.com/us/en/p/men/clearance/tops/jackets-coats/ae-x-umbro-warm-up-jacket/0101_1891_410"
    }
  ],
  "images": [
    "https://s7d2.scene7.com/is/image/aeo/0101_1891_410_l1",
    "https://s7d2.scene7.com/is/image/aeo/0101_1891_410_of"
  ],
  "locale": "us/en",
  "scrapedAt": "2026-10-26T10:00:00.000Z",
  "sizes": [
    {
      "size": "XS",
      "sizeCode": "1000",
      "skuId": "0044887271",
      "listPrice": 69.95,
      "salePrice": 27.98,
      "stockLevel": 2
    },
    {
      "size": "S",
      "sizeCode": "2000",
      "skuId": "0044884732",
      "listPrice": 69.95,
      "salePrice": 27.98,
      "stockLevel": 1
    },
    {
      "size": "M",
      "sizeCode": "3000",
      "skuId": "0044884740",
      "listPrice": 69.95,
      "salePrice": 27.98,
      "stockLevel": 0
    }
  ],
  "description": "Inspired by an archival warm-up jacket used for football training or warm-ups, this zip-up style features bold contrast taping, retro embroidery and side mesh pockets.",
  "details": [
    "An exclusive collab for the players & the fans.",
    "Crinkled nylon"
  ],
  "materials": [
    "100% Nylon",
    "Machine wash"
  ],
  "fit": [
    "Classic fit & length"
  ]
}
```

#### Field notes

- **One row per colour.** `productId` is the colour-level identifier, `styleId` is shared by all colours of a style, and `colorVariants` lists the other colours.
- **Brand.** `brand` carries the brand line of the product. The values are `AE` (American Eagle), `Aerie` and `OFFLINE` (the "OFFLINE by Aerie" sub-brand, a normal product line), so all of them share one dataset and can be filtered on this field.
- **Prices.** `listPrice` is the regular price, `salePrice` the current price and `discountPercent` the gap between them. `currency` is `USD`.
- **Sizes.** Each entry of `sizes[]` has `size`, `sizeCode`, `skuId`, `listPrice`, `salePrice` and `stockLevel`. `stockLevel` is the site's stock code per size: 0 available, 2 unavailable, 1 low stock, sometimes still orderable, sometimes not. The Actor does not turn it into an availability flag.
- **Sold out.** `isSoldOut` is a flag for the whole product colour, not for a single size.
- **Description fields.** `details`, `materials` and `fit` are arrays of strings, one entry per bullet of the product page.
- **Badges.** `badges` holds the badge codes the site uses, as published.

### Why a run stops

Every run ends as SUCCEEDED and writes an `OUTPUT` record in the default key-value store, with the reason it stopped in `stoppedReason`.

| `stoppedReason` | Meaning |
|---|---|
| `completed` | Every requested page was handled. |
| `maxProducts` | The row cap was reached. The cap is reserved before each row is saved, so the dataset never holds more rows than `maxProducts`. |
| `chargeLimit` | The maximum charge you set for the run was reached. The run stops cleanly and the rows saved so far are kept. |
| `deadline` | The run reached its own time budget, one minute before the platform timeout, and stopped taking new work. |
| `fallbackCap` | The product page fallback reached its cap (see above), so the run stopped. |
| `noToken` | The Actor could not get access to the product data. It read at most 20 product pages directly and stopped. Each start URL left unread gets a `TARGET_BLOCKED` row in `errors`, and the run status message says why. |
| `aborted` | The run was aborted from the Console or the API. |
| `badInput` | The input was not usable. The reasons are in the `errors` dataset. |
| `localRunRefused` | A local run without the offline fixtures. Nothing was requested. |

`OUTPUT` also holds `rowsEmitted`, `rowsCharged` (the product events billed according to the Apify platform, read from the run record at the end of the run, `null` when the run is not on Apify), `chargeRequests` (the charges the SDK accepted locally), `droppedAfterStop` (rows found after the charge cap stopped the run, neither saved nor billed), `errorsByKind`, `requests`, `blockedRate`, `maxProducts`, `mode`, `rowsBySource` (`api` and `html`), `htmlFallbacks`, `duplicateStartUrls`, `duplicateProducts`, `sitemapProductIds` (full catalogue only), `categories` and `runErrors`. Secrets are removed from every message before it is written.

#### The `categories` field

When you scrape a category, ae.com announces a number of products (`totalProducts`), and the pages then give a number of unique product ids (`uniqueIds`). The two can differ, because the live catalogue moves between two page requests. When the pages give fewer ids than announced, the Actor reads the category once more and merges the new ids (`reread: true`). A gap that remains after that single re-read is reported and accepted: it appears in `OUTPUT.categories` as `{ categoryId, totalProducts, uniqueIds, reread }`, with a warning in the log and no row in the `errors` dataset. The array is empty when the pagination has no gap. Example from the validation run: category `cat6430042` announced 186 products and gave 184 unique ids after the re-read.

#### Resume after a migration or a reboot

A resume after a platform migration or a reboot is designed to lose no row and bill no row twice: the Actor reads its own dataset at start-up and skips every product already saved. This was checked on the full catalogue run with a forced reboot in the middle. The restart found 26 rows pushed after the last state save and reconciled them, and the run ended with 9,505 rows for 9,505 distinct `productId` values. The one residual case is a row saved at the very moment a stop cut its charge: in the worst case that row is delivered without being billed. A product that had failed before the resume is tried again, so its error record can appear twice, while its row is saved once.

### Errors dataset

Problems are written to a separate dataset named `errors`, never billed. Each record has `_error: true`, a `kind`, the `url` and `productId` when known, the HTTP status, the attempt number, a message and a timestamp.

| `kind` | Meaning |
|---|---|
| `BAD_INPUT` | A field or a URL of the input is not valid. |
| `TARGET_BLOCKED` | The site blocked the request on every attempt, or the run stopped before this URL was read (see `noToken` and `fallbackCap`). |
| `SHOEBOX_MISSING` | The product page was served without the product data. |
| `EXTRACTION_FAILED` | The data was served but could not be turned into a row, or a sitemap was empty. |
| `TARGET_NOT_FOUND` | The product does not exist any more (HTTP 404 or 410). Not for an OFFLINE product, which gives a normal row. |

### Limits

- Only the US English store (`us/en`) is covered. Other countries and languages are not available.
- No customer reviews and no ratings.
- No size guide and no measurement charts.
- No store-level availability and no in-store stock.
- No price history. Each run is a snapshot, so schedule runs and keep the datasets if you want a history.
- Availability is limited to the product-level `isSoldOut` flag and the `stockLevel` code per size, whose meaning is given above.
- Products of the OFFLINE sub-brand give a normal row with `brand` set to `OFFLINE`.

### More shopping and product data tools

- [Amazon product data MCP](https://apify.com/mrbridge/amazon-mcp-server): Amazon product search, live prices, offers, reviews and bestseller ranks in four stores.
- [barcode nutrition lookup for AI](https://apify.com/mrbridge/food-barcode-mcp): ingredients, allergens, Nutri-Score and nutrients for packaged food by barcode.

### Frequently asked questions

#### Does it scrape Aerie as well as American Eagle?

Yes. ae.com sells both brands, and the rows of both come back in the same format. The `brand` field tells them apart (`AE`, `Aerie` and `OFFLINE`). There is no brand filter.

#### Why is there one row per colour and not per style?

Prices, images, badges and sold-out status can differ from one colour to the next. A row per colour keeps each of those values attached to the right item. Group by `styleId` to get one line per style.

#### Can I get the whole catalogue?

Yes. Set `fullCatalogue` to `true` and set `maxProducts` to about 10,000, which covers the 9,510 sitemap pages of 2026-10-28. The Actor reads the US product sitemap, which listed 9,510 product pages on 2026-10-28. The count changes as the site changes, and the Actor reads the sitemap at run time. On that date a full run saved 9,505 rows, which is every sitemap page except five gift cards that the site no longer serves (they give a `TARGET_NOT_FOUND` record in the `errors` dataset, which is not billed).

#### How long does a run take?

Measured on the Apify platform with 1,024 MB of memory:

| Run | Products | Duration |
|---|---|---|
| Prefilled example (one jeans category, `maxProducts` 15) | 15 | usually under 30 seconds |
| One whole category | 184 | about 65 s (measured on the previous build, the current one is expected to be faster) |
| Full catalogue, with a forced reboot in the middle | 9,505 | about 17 minutes (1,039 s) |

Times depend on how the site answers and are not a guarantee. A long run also stops by itself one minute before the platform timeout (`stoppedReason` `deadline`).

#### Does `stockLevel` tell me how many items are left?

No. It is a raw code from the site, not a quantity. `stockLevel` is the site's stock code per size: 0 available, 2 unavailable, 1 low stock, sometimes still orderable, sometimes not.

#### Can I use American Eagle Scraper via MCP?

Yes. Any Apify Actor can be called from an MCP client through the Apify MCP server. See the [Apify MCP documentation](https://docs.apify.com/platform/integrations/mcp) for the setup.

#### Your feedback

We're always working on improving the performance of our Actors. So if you've got any technical feedback for American Eagle Scraper or simply found a bug, please create an issue on the Actor's [Issues tab](https://apify.com/mrbridge/american-eagle-scraper/issues).

More free tools, scrapers, MCP servers and data studies from the same team: [mr-bridge.com](https://mr-bridge.com).

### Legal & responsible use

ae.com has its own terms of use, and it may restrict automated access or commercial reuse. Before you rely on the output, in particular for commercial use, confirm that your use is permitted by those terms. You remain responsible for how you use the results and for complying with the source's terms and with the laws that apply to you.

# Changelog

This Actor's version history is a separate document: https://apify.com/mrbridge/american-eagle-scraper/changelog.md

# Actor input Schema

## `startUrls` (type: `array`):

Accepted forms: product pages https://www.ae.com/us/en/p/.../0000_0000_000, product pages without the locale part https://www.ae.com/p/.../0000_0000_000 (read as /us/en/p/...), and category pages https://www.ae.com/us/en/c/.../cat0000000, all of the US English store. http: links are accepted. Ignored when Full catalogue is on.

## `fullCatalogue` (type: `boolean`):

Ignore Start URLs and read the product sitemap of the locale. Max products still applies.

## `locale` (type: `string`):

Store locale to read. Only the US English store is available for now.

## `maxProducts` (type: `integer`):

Hard cap on the number of product rows saved (and billed) in one run.

## `includeSizes` (type: `boolean`):

Add the per-size availability and price list (sizes) to each row.

## `includeDescription` (type: `boolean`):

Add description, details, materials and fit to each row.

## Actor input object example

```json
{
  "startUrls": [
    {
      "url": "https://www.ae.com/us/en/c/women/bottoms/jeans/cat6430042"
    }
  ],
  "fullCatalogue": false,
  "locale": "us/en",
  "maxProducts": 15,
  "includeSizes": true,
  "includeDescription": false
}
```

# Actor output Schema

## `products` (type: `string`):

Direct link to all dataset items produced by the run.

# 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 = {
    "startUrls": [
        {
            "url": "https://www.ae.com/us/en/c/women/bottoms/jeans/cat6430042"
        }
    ],
    "maxProducts": 15
};

// Run the Actor and wait for it to finish
const run = await client.actor("mrbridge/american-eagle-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 = {
    "startUrls": [{ "url": "https://www.ae.com/us/en/c/women/bottoms/jeans/cat6430042" }],
    "maxProducts": 15,
}

# Run the Actor and wait for it to finish
run = client.actor("mrbridge/american-eagle-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 '{
  "startUrls": [
    {
      "url": "https://www.ae.com/us/en/c/women/bottoms/jeans/cat6430042"
    }
  ],
  "maxProducts": 15
}' |
apify call mrbridge/american-eagle-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,mrbridge/american-eagle-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/4HMIFsaTOofY7tRLK/builds/YKfSaLaqFjx39b7SC/openapi.json
