Gap US Scraper icon

Gap US Scraper

Scrape Gap US (gap.com) clothing and fashion products by category. Extract product names, prices, discounts, ratings, stock availability, colors,…

Start using this actor on Apify ↗Need a custom scraper?Contact us ↗

Gap US Scraper at a glance

Gap US Scraper is a ready-to-run Apify actor from abotapi for collecting web data. Its documented output includes product, storefront, price, was and discount %, which you can export as JSON, CSV or Excel or read through the Apify API. It costs $2.20 per 1,000 results on the Apify Free plan and from $1.60 on paid plans, with smaller per-run or optional feature charges listed on Apify.

Runs on
Apify cloud: console, API, schedules and integrations
Data type
Other
Region
North America
Pricing
$2.20 per 1,000 results (Free plan), from $1.60 on paid plans
Output
Documented below · JSON, CSV, Excel
Inputs
31 options

Scrape Gap US (gap.com) clothing and fashion products by category. Extract product names, prices, discounts, ratings, stock availability, colors, color-specific details and full descriptions. Ideal for price monitoring, competitor analysis and retail research.

What Gap US Scraper can do

  • Six storefronts, one input. Tick any mix of Gap, Old Navy, Banana Republic, Athleta, Gap Factory and Banana Republic Factory; every keyword and category runs in each, and pasted links go to the store they belong to.
  • Up to 200 colour listings per request, at no extra cost. Category and search pages already carry price, was-price, discount, rating, review count, every colour with its price, stock count and image, so a plain run is the cheapest way to watch a whole department.
  • Prices per colour, filters at the source. The same style can be priced differently per colour: the row gives the lowest and highest price and colors gives each colour's own price, was-price, discount, price type and stock. Price window, on-sale, minimum rating and sort order are applied by the store, and the filters you tick on the site (written after the # in a category link) are applied too.
  • Full detail on demand. Product pages add the description, fit and size notes, fabric composition and care, merchandise department, size chart link, breadcrumbs, colour galleries and videos, and a size table with a barcode, stock status and price for every colour and size.
  • Customer voice included. Review text, stars, title, date, public display name, helpful votes, the verified-purchase flag and how the item fit, in the order you choose, plus the rating breakdown and recommended share, optionally with the photos reviewers attached.
  • Built for monitoring. Incremental mode returns only new, changed and, optionally, delisted products on a schedule, a price-only mode keeps description edits out of your bill, and a refused run fails loudly instead of returning an empty dataset.

Choose what to collect

These inputs let you configure Gap US Scraper - Clothing, Prices, Discounts & Stock. Open the actor on Apify to enter your values and review the current options.

Supported input fields
InputWhat it controls
modestring · requiredChoose 'search' to search by keyword, 'category' to pick category pages by name, or 'url' to scrape pasted links. Each mode reads only its own fields below.

Choices: search, category, url

brandsarrayWhich storefronts to search or browse. Gap is used when none is ticked. Each keyword and category is run in every ticked storefront. Pasted links ignore this setting, except a bare product number, which is read in the first ticked storefront.
queriesarrayWords to search for, for example 'denim jacket'. One search per keyword and storefront; duplicates are searched once. Up to 50 keywords. Read only in search mode.
categoryKeywordsarrayWords from the category's address, for example 'women dresses' or 'sweaters'. Several phrases select several categories. Read only in category mode.
maxCategoriesintegerAt most this many matching categories are walked in each ticked storefront (the broadest names are taken first).
urlsarrayStorefront links to scrape directly. A category link may carry the filters the site writes after the # sign; they win over the price, sale and rating settings below. A product link always reads the product page. Read only in url mode.
sortBystringOrder of the results in category and keyword scopes. A sort order written into a pasted category link wins. 'Relevance' keeps the store's own order.

Choices: relevance, priceAsc, priceDesc, ratingDesc

Show 24 more inputs
More input fields
InputWhat it controls
minPricenumberOnly products with a colour priced at or above this amount. Leave empty for no lower limit.
maxPricenumberOnly products with a colour priced at or below this amount. Leave empty for no upper limit.
onSaleOnlybooleanOnly products with at least one colour marked down (sale or clearance price).
minRatingnumberOnly products rated at or above this average (0 to 5). Products without reviews are excluded.
fetchDetailsbooleanSearch and category scopes only: read every product's own page for the full description, fit and fabric text, size and barcode table, breadcrumbs and rating breakdown. Off by default because it costs one extra page per product. Pasted product links always read the product page (there is no result card behind them), so those rows are always billed one 'Product page detail' event whatever this toggle says.
fetchReviewsbooleanAdd customer reviews to every product row (this also reads the product page, so the detail surcharge applies). Billed per review returned.
maxReviewsPerProductintegerReviews to collect per product when 'Collect customer reviews' is on. Up to 1000.
reviewSortstringWhich reviews come first when a product has more than the maximum.

Choices: newest, oldest, helpful, highest, lowest

includeReviewPhotosbooleanAdd the links of photos customers attached to their reviews.
maxItemsintegerMaximum number of products to return across the whole run, EXPIRED rows from Incremental mode included. This is the run's cap. Use 0 for the maximum of 100000 products per run.
maxPagesintegerMaximum number of result pages to take per keyword or category. Each page carries up to 200 colour listings (roughly 100 to 180 products). 0 = no page limit set; the run then stops at Max products, when there are no more results, or at a safety limit of 2000 pages per keyword or category (far above what Max products can reach). Product links have no result pages.
resumeFromRunIdstringPaste a previous run ID or dataset ID to continue a large pull without returning or charging for products already collected there. Use this after an interrupted run. For recurring monitoring of the same scope, use Incremental mode below instead.
incrementalModebooleanTurn this on for daily or recurring monitoring. The first run returns every matching product as NEW. Later runs normally return only NEW, UPDATED and REAPPEARED products, which makes it a cheap way to watch price drops. What is compared: price range, was-price, discount, on-sale flag, price type, name, brand, description, fit and fabric text, every colour with its own price and the size table. What is excluded by default (still returned in the row, never a change): scrape timestamps, the product's rank and page, where it was found (link, keyword, category), ratings and reviews (average rating, review count, rating breakdown, fit summary and the review sample), the rotating promo and 'new' flags, and image links. Stock and availability (in-stock flag, units, per-colour and per-size stock) are also excluded unless you turn on 'Count stock changes', because they move with every order. Colour and size lists are compared regardless of the order the store returns them. 'Changes to watch' narrows this to price (and stock when counted) only. Turn on 'Emit unchanged' or 'Emit expired' only when you also want those rows returned (and billed). State is kept separately for each scope and filter setup; use State key to name or deliberately share a monitoring campaign. To continue one specific interrupted run instead, use Resume from a previous run above.
stateKeystringOptional. Name this monitoring campaign to keep its state stable, or to deliberately share state across differently configured runs. Leave empty to derive a key automatically from the scope and filter settings, so two different scopes never mix state.
emitUnchangedbooleanOff by default. Turn on to also return products that have not changed since the last run, marked UNCHANGED. This returns, and bills, extra rows you already have, so leave it off unless you want a full snapshot every run.
emitExpiredbooleanOff by default. Turn on to also return products that were present in a previous run but are no longer found, marked EXPIRED. Only produced once a run has fully scanned the tracked scope without a page that could not be read, never when Max products capped it or Resume was used. A product page the store reports as not available also counts as missing; consider 'Expire after missed scans' above 1 so a brief gap does not expire a product. EXPIRED rows count against Max products: a run returns at most the room left under it, and the rest are returned on a later complete run. This returns, and bills, extra rows, so leave it off unless you need expiry tracking.
changeScopestringAll fields (default): any change to the compared product data marks a product UPDATED. Price only (and stock when counted): just price, was-price, discount, on-sale flag and per-colour price, so name, description or fit-text edits never produce a billable UPDATED row. Changing this never starts a new baseline: the existing saved state is kept (under an automatic or a named State key) and each stored product is simply compared under the new setting.

Choices: all, priceAndStock

watchStockbooleanOff by default. Stock figures move with every order, so counting them marks products UPDATED, and bills them, without a price or content change. Turn on to count the in-stock flag, unit totals and per-colour and per-size stock as changes.
compactUpdatesbooleanOff by default. When on, UPDATED and EXPIRED rows are slim: ids, link, name, current price and stock, plus priceChanges (old and new value of each field that moved) and variantChanges (per-colour ADDED, REMOVED or CHANGED). NEW rows stay full. A compact row does not carry product-page detail fields or reviews, so no detail or review charge applies to it.
expireAfterMissedScansintegerUsed with 'Emit expired'. A product is marked EXPIRED only after it was missing from this many CONSECUTIVE complete scans (default 1). Products rotate in and out of a category as the store restocks, so a value of 2 or more avoids false expiries.
ignoreFieldsForChangesarrayField names that must not count as a change, for example name or highlights. Use a dotted path to ignore a key inside every element of a list, for example colors.price. Ignored fields are still returned in the row. Rank, where the product was found, ratings and reviews, promo flags and image links are already ignored by default. Changing this list never starts a new baseline: the saved state is kept and each stored product is re-compared under the new list, so no product comes back as NEW.
mcpConnectorsarrayOptionally send results into the apps you already use, via Model Context Protocol (MCP) connectors. Authorize one under Apify, Settings, API & Integrations, then select it here. Notion gets a page per product; other connectors get a best-effort write or digest. Each connector receives a condensed summary per product, not the full record; the complete record always stays in the dataset. Leave empty to skip; this never changes the dataset output. Supported: Notion (https://mcp.notion.com/mcp), Linear (https://mcp.linear.app/sse), Airtable (https://mcp.airtable.com/mcp), Apify (https://mcp.apify.com).
notionParentPageUrlstringURL or id of the Notion page under which product pages are created. Required to enable the Notion export; ignored by other connectors.
maxNotifyListingsintegerCap on products written to each connector per run. Does not affect the dataset.

Fields in the output

The documented dataset includes the fields below. Availability can depend on the source page and selected mode.

nameProduct
brandStorefront
pricePrice
regularPriceWas
discountPercentDiscount %
discountAmountSaving
currencyCurrency
ratingRating
reviewCountReviews
colorCountColours
inStockIn stock (boolean)
badgesBadges (array)
Show 39 more fields
imageUrlImage (image)
urlURL (link)
productKeyKey
changeTypeChange
departmentDepartment
productTypeType
descriptionDescription
fitAndSizingFit (array)
materialsMaterials (array)
sizesSizes (array)
breadcrumbsPath (array)
colorscolors
colorIdColour id
colorNameColour
colorGroupColour family
priceTypePrice type
stockStatusStock
inventoryCountUnits
skusskus
skuItem number
sizeSize
size2Size 2
fitFit
upcBarcode
reviewsreviews
reviewIdReview id
titleTitle
textReview
dateDate
authorAuthor
verifiedPurchaseVerified (boolean)
helpfulVotesHelpful
notHelpfulVotesNot helpful
recommendedRecommends (boolean)
changedFieldsChanged fields (array)
firstSeenAtFirst seen
lastSeenAtLast seen
priceChangesPrice changes
variantChangesColour changes

Example output

An example from this actor’s documentation. Values are illustrative; this is not a fresh live result.

{
  "recordType": "product",
  "productKey": "oldnavy:100001",
  "productId": "100001",
  "name": "Sample Crew Sweater",
  "brand": "Old Navy",
  "brandCode": "oldnavy",
  "url": "https://oldnavy.gap.com/browse/product.do?pid=100001",
  "currency": "USD",
  "price": 22.49,
  "priceMax": 29.99,
  "regularPrice": 44.99,
  "discountPercent": 50,
  "discountAmount": 22.5,
  "onSale": true,
  "priceType": "Sale",
  "rating": 4.5,
  "reviewCount": 62,
  "colorCount": 2,
  "colors": [
    {
      "colorId": "100001002",
      "colorName": "Black Jack",
      "colorGroup": "Black",
      "price": 22.49,
      "regularPrice": 44.99,
      "discountPercent": 50,
      "priceType": "Sale",
      "stockStatus": "In Stock",
      "inventoryCount": 120,
      "imageUrl": "https://content.gapinc.com/b/0000/000/000/sample.jpg",
      "promoFlags": [
        "4 Days Only Deal"
      ]
    },
    {
      "colorId": "100001012",
      "colorName": "Clove",
      "colorGroup": "Red",
      "price": 29.99,
      "regularPrice": 44.99,
      "discountPercent": 33,
      "priceType": "Sale",
      "stockStatus": "In Stock",
      "inventoryCount": 80
    }
  ],
  "inStock": true,
  "totalInventory": 200,
  "productType": "womens sweaters",
  "categoryId": "1185233",
  "categoryName": "Shop All Women's",
  "badges": [
    "New"
  ],
  "description": "Soft knit crew-neck sweater. Ribbed trim.",
  "fitAndSizing": [
    "Classic fit.",
    "Hits at hip."
  ],
  "materials": [
    "53% Cotton, 24% Nylon, 23% Acrylic."
  ],
  "care": [
    "Machine wash cold.",
    "Imported."
  ],
  "sizes": [
    "XS",
    "S",
    "M",
    "L",
    "XL"
  ],
  "fitVariants": [
    "Regular",
    "Tall",
    "Petite"
  ],
  "skus": [
    {
      "sku": "10000100200009",
      "colorId": "100001002",
      "fit": "Regular",
      "size": "XS",
      "stockStatus": "IN_STOCK",
      "inStock": true,
      "upc": "000000000001",
      "price": 22.49,
      "regularPrice": 44.99
    }
  ],
  "breadcrumbs": [
    {
      "name": "Women",
      "url": "https://oldnavy.gap.com/browse/women?cid=1185233"
    }
  ],
  "ratingHistogram": {
    "1": 3,
    "2": 2,
    "3": 5,
    "4": 12,
    "5": 40
  },
  "recommendedPercent": 91,
  "fitSummary": {
    "Overall Size": "true to size"
  },
  "position": 3,
  "page": 1,
  "sourceLabel": "women/shop-all-womens",
  "reviewsRequested": true,
  "reviews": [
    {
      "reviewId": "1",
      "rating": 5,
      "title": "So soft",
      "text": "Sample review text.",
      "author": "Sam K",
      "date": "2026-09-25T10:00:00.000+00:00",
      "recommended": true,
      "helpfulVotes": 2,
      "notHelpfulVotes": 0,
      "verifiedPurchase": true,
      "colorId": "100001002",
      "fit": {
        "Overall Size": "true to size"
      }
    }
  ],
  "reviewsDelivered": 1,
  "changeType": "NEW",
  "changedFields": [],
  "firstSeenAt": "2026-10-31T12:00:00Z",
  "lastSeenAt": "2026-10-31T12:00:00Z",
  "scrapedAt": "2026-10-31T12:00:00Z"
}

Ways to use this data

  • Price and markdown monitoring: track price drops, clearance moves and was-prices across a department, a brand or a product list on a schedule.
  • Competitive intelligence for retailers and brands: compare assortment, pricing, colour depth, size ranges and ratings across the six storefronts.
  • Size and availability analysis: see which sizes and colours are in stock, with barcodes to match your own catalogue.
  • Review mining: pull written reviews with stars, dates, fit feedback and helpful votes to find what customers love and what breaks.
  • Catalogue and content teams: build a structured feed of names, copy, fabric, fit notes, images and barcodes for a comparison site or app.

Before you run

Start with a small input and check the resulting records against your expected fields. Source content and actor options can change; the current Apify listing is the reference for availability and pricing.

Questions about this actor

What data does Gap US Scraper return?

The documented output for Gap US Scraper includes product, storefront, price, was, discount %, saving, currency and rating. Availability of each field depends on the source page and the selected mode.

How much does Gap US Scraper cost?

It costs $2.20 per 1,000 results on the Apify Free plan and from $1.60 on paid plans, with smaller per-run or optional feature charges listed on Apify. The Apify listing shows the current rate for every plan.

Which storefronts are covered, and which country?

The six US storefronts: Gap, Old Navy, Banana Republic, Athleta, Gap Factory and Banana Republic Factory, in US dollars. Connections are pinned to the United States because the stores redirect other countries to their local sites.

Can I search by keyword?

Yes. Use search mode and list one or more keywords; pick the storefronts to search. Category mode (words from the category name) remains for walking whole departments, and you can paste a category page you found on a store, with any filter you ticked.

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

Yes. Schedule the actor from the Schedules tab and turn on Incremental mode. Each run then returns only new and updated products, and unchanged ones are not billed unless you turn on Emit unchanged.

Why do some rows have no description or sizes?

Result pages carry prices, colours, stock counts and ratings, while the description, fit and fabric text, size table and breadcrumbs live on each product's own page. Turn on Read each product's page, or paste product links, to get them.

Ready to collect with Gap US Scraper?

Run it on Apify with your own input and export the results as JSON, CSV or Excel.