Supported sites › Gap.com

Gap.com product data scraping

The full US catalog with prices, markdowns, colour variants and size-level stock. We have already run it end to end: 7,718 product listings across 71 category paths, published as a free dataset you can open before talking to us.

Scope

What Gap.com data scraping actually returns

Counts from our May 2026 full run. Gap is a mid-sized catalog by retail standards, which means a complete extraction is realistic rather than aspirational.

SectionListingsDeepest subcategories
Women3,591Accessories 600, Tees 440, Jeans 428, Sweats 344, Sleep 343
Girls1,129Tees 200, Dresses, Jeans, Shoes
Men1,075Accessories 200, Tees, Shirts, Jeans
Baby & Toddler1,034Tees 210, Shoes 190, Sets
Boys889Tees 306, Jeans, Sweats
Total7,71871 distinct category paths

A useful sanity check for anyone planning a project here: the whole store is smaller than a single category on a marketplace. That makes Gap a good first source for a pricing study, a fashion range benchmark or a size-inclusivity analysis, and a good proving ground before committing to something heavier.

Output

Fields we extract

The eight columns below are the standard export, with fill rates from the live run. The extended set underneath is available on request and costs more, because it needs a visit to every product page rather than the category listings.

FieldExampleCoverage
titleMid Rise Rigid Relaxed Flare Jeans100%
full_categoryWomen/Jeans100%
urlgap.com/browse/product.do?pid=859931002100%
currentPrice$44.00100%
originalPrice$89.9581.5%
colorsBlack hawk, Medium indigo, Light indigo100%
sizes24, 25, 26 … 35, Short, Regular, Long100%
availableSizesthe subset currently in stock99.4%

Extended fields, on request

  • Rating average and review count from the product page
  • All gallery image URLs plus colour swatch images
  • Fit options where a style offers them — Regular, Tall, Petite
  • Inseam length as a separate dimension rather than mixed into sizes
  • Product description and fabric and care text
  • Colour ID per swatch, which is what lets you track a single colourway over time
Technical notes

Four things that decide whether a Gap extraction is any good

One product is several PIDs

Gap product URLs carry a pid, and that identifier is per colourway rather than per style. The khaki flare in our dataset appears as 815743002, 815743012 and 815743022 — same title, same size run, same price, three colours. Treat each PID as a product and your category counts inflate; collapse them blindly and you lose the colour-level stock signal. We keep both, with a derived style ID alongside the PID, and let you decide which grain the analysis runs on.

The same product is listed in several categories

Our run returned 7,718 listings against 6,691 distinct PIDs. The gap is cross-listing: a kids' tee sits under both Boys/Tees and Girls/Tees, a slipper appears under Shoes, Accessories and Pajamas. 346 titles show up in more than one category path. If you deduplicate on URL you will miss it, because the cid and pcid parameters differ per listing even when the PID does not. This is the single most common way a Gap extraction ends up quietly wrong.

Sizes and availability are two different columns for a reason

Gap publishes the full size run on a listing regardless of stock, with sold-out sizes rendered but disabled. In our May run, 50.6% of listings had at least one size unavailable and only 43 were fully sold out. Anyone reading the size field alone would conclude the catalog is almost perfectly stocked. The interesting analysis — actual size inclusivity, which sizes sell out first, which styles are effectively unavailable to half the market — lives entirely in the difference between the two columns.

The size field mixes several systems

113 distinct size strings appear across the catalog: alpha runs (XXS–XXL), numeric waist sizes, kids' bracketed equivalents such as XS (4/5), baby age ranges like 6-12 M, and inseam labels — Short, Regular, Long — sitting in the same field as the numbers. Any comparison across departments needs those normalised first. We do it during processing and document the mapping rather than handing over a field nobody can pivot on.

Collection profile

Gap renders category and product pages server-side, so the data is present in the markup and no headless browser is required for the standard field set. Pagination is walked per category path rather than through a global listing, which is also what makes the cross-listing behaviour visible. A full-catalog pass runs in a few hours on datacenter IPs at a conservative request rate; the practical constraint is rate limiting rather than bot challenges.

Sample

One product, extended field set

A live capture of the product shown below, with the extended fields enabled. Note the price: our May dataset recorded this style at $44.00 against a $89.95 list price. Today it sits at $53.00. That movement is the entire argument for monitoring rather than snapshotting.

{
  "pid": "859931002",
  "style_id": "859931",
  "title": "Mid Rise Rigid Relaxed Flare Jeans",
  "url": "https://www.gap.com/browse/product.do?pid=859931002&vid=1&pcid=5664&cid=5664",
  "category_path": ["Women", "Jeans"],
  "price": {
    "current": 53.00,
    "list": 89.95,
    "discount_pct": 41.1,
    "promo_text": "40% off: limited time",
    "currency": "USD"
  },
  "color": {
    "name": "Light indigo",
    "swatch_count": 4,
    "siblings": ["Black hawk", "Medium washed indigo", "Medium indigo"]
  },
  "fit": ["Regular", "Tall", "Petite"],
  "sizes": ["24","25","26","27","28","29","30","31","32","33","34","35"],
  "inseam": ["Short", "Regular", "Long"],
  "available_sizes": ["24","25","26","27","28","29","30","31","32","33","34","35"],
  "rating": { "average": 3.5, "count": 5 },
  "collected_at": "2026-09-12T08:40:00Z"
}
Gap.com product page for Mid Rise Rigid Relaxed Flare Jeans showing the fields JsonEngine extracts: price, list price, promotion text, colour swatches, fit, size run and inseam
Source fields on a Gap product page, mapped to the JSON above.
Proof

The full run, published

We do not ask you to take the above on trust. The complete extraction is available as a dataset — open it, check the field coverage, look for the cross-listed rows.

Applications

What this data answers

%

Markdown strategy

81.5% of listings in our run carried a list price above the selling price, averaging a 42.9% markdown. Tracked weekly, that becomes a readable promotional calendar rather than an impression.

▢

Size availability

The sizes-versus-available split shows which parts of the size run actually stay in stock. Useful for range planning and for any study of size inclusivity in US apparel.

⇆

Price benchmarking

Prices ran from $4.97 to $275.00 with a median of $29.00. Set against a comparable retailer, that positions a whole assortment in one chart.

△

Range change over time

Repeat runs surface new arrivals, delisted styles and colourways that quietly disappear — the part of merchandising nobody announces.

Delivery

Timing, formats and cost

A full catalog export is delivered within two working days of an agreed spec. A single section — Women, or Jeans across all departments — is usually same-day. Recurring runs are scheduled weekly or daily, with a change report between runs so you receive the delta rather than a fresh 7,700-row file every time.

Output as CSV, JSON, Excel, Google Sheets, SQL or an API endpoint. If the data lands in a warehouse, send the target schema and we will map to it.

from $200

Gap sits at the accessible end of our range: server-rendered, mid-sized catalog, no location-dependent pricing. A one-off full-catalog export starts at $200; recurring monitoring is quoted per interval.

Get a quote
§

What we collect, and what we leave alone

Everything above is visible to any visitor browsing gap.com without an account. We do not collect customer data, we do not touch anything behind a login, and we do not republish review text or rehost product images — image URLs only. Rating averages and counts are numeric aggregates, not customer content.

Questions

Scraping Gap, in practice

Can you cover Old Navy, Banana Republic and Athleta too?

Yes. They run on the same platform and the same URL structure, including the per-colour PID behaviour, so a parser built for Gap adapts quickly. Cross-brand pricing within Gap Inc is one of the more interesting things this data supports, and adding a sibling brand costs considerably less than a fresh source.

Why are there more rows than unique products?

Because a row is a product in a category, and Gap lists a good share of its range in more than one. The same PID turns up under a different category path, so the listing count always runs ahead of the distinct product count. We report both rather than silently deduplicating, since which one is correct depends on whether you are measuring catalog size or category breadth.

Can I get historical prices for Gap?

Only from the point monitoring starts. Our May 2026 full run exists and can serve as a baseline, but nobody has a trustworthy retroactive price history for a retailer they were not already tracking. Anyone offering one is reconstructing it.

Do you collect product reviews?

We collect the rating average and the review count, not the review text. Those two numbers carry most of the commercial signal, and they avoid the copyright and personal data questions that come with republishing what individual customers wrote.

How often does the parser break?

Gap's structure has been stable through our runs, and the URL scheme has not changed in years. Apparel retailers do redesign category pages periodically, so on a recurring feed we monitor for shape changes and rewrite as needed. That maintenance is included rather than billed as a change request.

Can you scrape only one category instead of the whole site?

Yes, and it is often the better brief. Women/Jeans is 428 listings and Women/Dresses is 275 — small enough to deliver same-day and to compare against the equivalent category at two or three other retailers, which usually answers more than a single full catalog does.

Related

Other sites and services

Start with the dataset, not a sales call

Open the free Gap catalog, check whether the fields fit your analysis, and come back with a brief if they do.

Open the dataset