Browse and search Old Navy's catalog (and its Gap Inc. sibling storefronts — Gap, Banana Republic, Athleta) and pull product detail, per-store pickup availability, and reviews — all as normalized JSON from the Crawlora API, with no HTML scraping.
When to use this skill
- "What does X cost on Old Navy?" or "find X on Old Navy/Gap/Banana Republic/Athleta."
- "Browse this Old Navy category" / "what's in Old Navy's [department]?"
- "Is this Old Navy item in stock for pickup near me?"
- "Pull the reviews for this Old Navy product."
- "Find the nearest Old Navy/Gap/Banana Republic/Athleta store."
Setup (one-time)
- Get a free Crawlora API key (2,000 credits/mo, no card) at https://crawlora.net.
- Set
CRAWLORA_API_KEYin the environment before running the helper. - The helper reads
CRAWLORA_API_KEYfrom the environment and sends requests tohttps://api.crawlora.net/api/v1. Missing/invalid key →401.
How it works
- Find a category id —
/oldnavy/categorieslists the storefront's own navigation as name/cidpairs; omitcidfor the top-level divisions (Women, Men, Boys, Toddler), or pass one to list the categories nested under it. - Browse or search —
/oldnavy/category(cid) or/oldnavy/search(keyword) return paginated product summaries with pricing, review scores, and every purchasable color variant (colors[].id). - Detail —
/oldnavy/product(pid, a color-specific id from a result'scolors[].id, not the base product id) fetches name, description, images, rating, and every size offered in that color as a priced offer. - Availability —
/oldnavy/product/availability(pidplusstore_id, orzip, orlat+lng) checks per-size in-store pickup stock at one or more physical stores. - Reviews —
/oldnavy/product/reviews(pid) pulls one page of customer reviews plus the rating summary/histogram. - Nearby stores —
/oldnavy/stores(searchand/orlat+lng) looks up physical store locations (address, phone, distance, specialties).
Every call above takes brand (on Old Navy, gap Gap, br Banana
Republic, at Athleta; defaults to on) to pick the storefront — a cid
or pid only works against the brand it was found under.
Full endpoint list, methods, and params: reference/endpoints.md.
Calling the API
# Top-level Old Navy divisions, then categories under one:
scripts/crawlora.sh /oldnavy/categories | jq '.'
scripts/crawlora.sh /oldnavy/categories cid=5155 | jq '.'
# Search (defaults to brand=on; pass brand=gap/br/at for the siblings):
scripts/crawlora.sh /oldnavy/search keyword="linen shirt" | jq '.'
# Browse a category:
scripts/crawlora.sh /oldnavy/category cid=5155 page=1 | jq '.'
# Product detail (pid is color-specific, from a search/category colors[].id):
scripts/crawlora.sh /oldnavy/product pid=123456002 | jq '.data'
# In-store pickup availability near a zip code:
scripts/crawlora.sh /oldnavy/product/availability pid=123456002 zip=94103 | jq '.'
# Reviews:
scripts/crawlora.sh /oldnavy/product/reviews pid=123456002 page=1 | jq '.'
Use scripts/crawlora.sh for all requests; it keeps the API key out of command-line arguments.
Endpoint reference
See reference/endpoints.md for every Old Navy
endpoint this skill uses (method, path, params, description).
Examples
- Category sweep:
/oldnavy/categoriesto find a division'scid, then/oldnavy/categorypaginated to list products and their color variants. - Product due diligence:
/oldnavy/productfor price/rating detail on a color variant, then/oldnavy/product/reviews(samepid) to summarize what customers say before recommending it. - Check local pickup:
/oldnavy/searchor/oldnavy/categoryto get apid, then/oldnavy/product/availabilitywithzip(orstore_idfrom/oldnavy/stores) to see which sizes are in stock nearby.
Notes & limits
- Credits / pay-on-success: billed only on
2xx; free tier 2,000 credits/mo. Key at https://crawlora.net. - Public data only — public Old Navy/Gap/Banana Republic/Athleta product and category pages; respect each storefront's terms.
- Security: key lives in
CRAWLORA_API_KEYonly — never hardcode, query-param, or commit it. brandselects the storefront (on/gap/br/at, defaults toon) on every endpoint except/oldnavy/categories, which currently only supportson— Gap, Banana Republic, and Athleta render their category navigation client-side with no server-rendered id to scrape. Acidorpidonly resolves against the brand it was found under.- Product identity is
pid, a color-specific id from a search/category result'scolors[].idfield — not the bare base product id./oldnavy/product,/oldnavy/product/availability, and/oldnavy/product/reviewsall key off it. /oldnavy/searchis best-effort relevance, not a guaranteed keyword match — an obscure or nonsense keyword can fall back to the upstream index's own recommended results with no signal distinguishing that from a true match.- Pagination is one-based
pageeverywhere it applies (category,search,product/reviewsat 10 reviews/page); a product with no reviews yet returns a well-formed empty result, not an error. /oldnavy/product/availabilityand/oldnavy/storesboth accept location either asstore_id(comma-separated) /search, or viazip, or vialat+lngtogether —/oldnavy/storesis location lookup only and doesn't report per-item stock.