Skip to content

commonbq/common-apis

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 
 
 

Repository files navigation

Common Retail APIs

A curated list of publicly discoverable web APIs used by major U.S. beauty and department store retailers. Inspired by public-apis/public-apis, this repository documents endpoints, request patterns, and headers needed to experiment with Macy's, Sephora, Ulta, and Nordstrom data.

Contents

Macy's

API Base URL Method Example Query Required Headers Notes
Product Listing https://www.macys.com/xapi/discover/v1/catalog/category/{categoryId} GET ?page=1&pageSize=40&sortBy=ORIGINAL&include=FACETS,PRODUCTS
JSON{"Accept":"application/json, text/plain, /","Content-Type":"application/json","Origin":"https://www.macys.com","Referer":"https://www.macys.com/shop/makeup","User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0 Safari/537.36"}
Replace {categoryId} with Macy's numeric ID from nav links (e.g. 46345). Supports sortBy, page, pageSize, and include to control grids/facets.
Product Details https://www.macys.com/xapi/product/v3/pdp/{productId} GET ?experience=pdp&include=AVAILABLE_SIZES,MEDIA,PRICES
JSON{"Accept":"application/json, text/plain, /","Content-Type":"application/json","Origin":"https://www.macys.com","Referer":"https://www.macys.com/shop/product?ID=5607075","User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0 Safari/537.36"}
{productId} aligns with the ID query param on PDP URLs. include toggles payload slices (images, price blocks, availability, etc.).
Product Search https://www.macys.com/xapi/discover/v1/catalog/search GET ?searchphrase=lipstick&page=1&pageSize=40&sortBy=ORIGINAL
JSON{"Accept":"application/json, text/plain, /","Content-Type":"application/json","Origin":"https://www.macys.com","Referer":"https://www.macys.com/shop/featured/lipstick","User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0 Safari/537.36"}
Pagination controlled via page/pageSize. Browser-like User-Agent prevents 403 responses.
Product Reviews https://api.bazaarvoice.com/data/reviews.json GET ?apiversion=5.5&passkey=<public-key>&displaycode=macys-en_us&filter=productid:eq:5607075&page=1&page_size=20&sort=submissiontime:desc
JSON{"Accept":"application/json, text/plain, /","Origin":"https://www.macys.com","Referer":"https://www.macys.com/shop/product?ID=5607075","User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0 Safari/537.36"}
Reviews powered by Bazaarvoice; harvest the passkey/displaycode from the BV script tag. Supports rich filters (photos/videos, rating ranges, locale).

Sephora

API Base URL Method Example Query Required Headers Notes
Product Listing https://www.sephora.com/api/catalog/categories/{categoryId}/products GET ?currentPage=1&pageSize=60&sortBy=bestSelling
JSON{"Accept":"application/json, text/plain, /","Origin":"https://www.sephora.com","Referer":"https://www.sephora.com/shop/makeup","User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0 Safari/537.36","X-Requested-With":"XMLHttpRequest"}
Swap {categoryId} with Sephora's catXXXXX identifier (inspect nav links). Query params paginate/sort results.
Product Search https://www.sephora.com/api/catalog/search GET ?keyword=lipstick&pageSize=60&currentPage=1
JSON{"Accept":"application/json, text/plain, /","Origin":"https://www.sephora.com","Referer":"https://www.sephora.com/search?keyword=lipstick","User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0 Safari/537.36","X-Requested-With":"XMLHttpRequest"}
keyword parameter required; pagination uses currentPage + pageSize. Keep origin/referer aligned with onsite search page.
Product Reviews https://api.bazaarvoice.com/data/reviews.json GET ?apiversion=5.5&passkey=<public-key>&displaycode=sephora-en_us&filter=productid:eq:P379884&page=1&page_size=20&sort=submissiontime:desc
JSON{"Accept":"application/json, text/plain, /","Origin":"https://www.sephora.com","Referer":"https://www.sephora.com/product/rare-beauty?_sku=P379884","User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0 Safari/537.36"}
Bazaarvoice hosts Sephora's UGC. Grab passkey/displaycode from network tab (Bazaarvoice.config). Filters can include rating and contentlocale.

Ulta

API Base URL Method Example Query Required Headers Notes
Product Listing https://services.ulta.com/search/v2/search/category GET ?categoryId=cat90004&page=1&pageSize=24&sortBy=bestSeller
JSON{"Accept":"application/json, text/plain, /","Origin":"https://www.ulta.com","Referer":"https://www.ulta.com/shop/makeup","User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0 Safari/537.36","x-ulta-api-version":"2","x-ulta-platform":"web"}
Same payload as onsite category grids; categoryId matches cat##### value in URL. sortBy accepts topRated, priceLow, etc.
Product Search https://services.ulta.com/search/v2/search/product GET ?keyword=lipstick&page=1&pageSize=24&sortBy=bestSeller
JSON{"Accept":"application/json, text/plain, /","Origin":"https://www.ulta.com","Referer":"https://www.ulta.com/search?keyword=lipstick","User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0 Safari/537.36","x-ulta-api-version":"2","x-ulta-platform":"web"}
keyword drives base search; optional filters include sortBy, categoryIds, pageSize. Custom lowercase headers required.
Product Reviews https://api.bazaarvoice.com/data/reviews.json GET ?apiversion=5.5&passkey=<public-key>&displaycode=ulta-1&filter=productid:eq:2564014&page=1&page_size=20&include=authors
JSON{"Accept":"application/json, text/plain, /","Origin":"https://www.ulta.com","Referer":"https://www.ulta.com/p/lipstick?productId=2564014","User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0 Safari/537.36"}
Ulta also fronts Bazaarvoice; passkey/displaycode rendered in BV script tag. Supports incentivizedstats, ratingdistribution, etc.

Nordstrom

API Base URL Method Example Query Required Headers Notes
Product Listing https://www.nordstrom.com/api/category/{categoryId} GET ?page=1&pageSize=24&sort=featured
JSON{"Accept":"application/json, text/plain, /","Origin":"https://www.nordstrom.com","Referer":"https://www.nordstrom.com/browse/women","User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0 Safari/537.36","x-country-code":"US","x-language":"en-US"}
Swap {categoryId} with numeric dept ID (e.g. 6000002). Response includes products + facets; page/pageSize paginate grid results.
Search Suggestions https://www.nordstrom.com/api/search/data GET ?keyword=lipstick&top=20&skip=0
JSON{"Accept":"application/json, text/plain, /","Origin":"https://www.nordstrom.com","Referer":"https://www.nordstrom.com/sr?keyword=lipstick","User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0 Safari/537.36","x-country-code":"US","x-language":"en-US"}
top controls returned records; skip is the offset. Match locale headers to target site language.
Product Reviews https://api.bazaarvoice.com/data/reviews.json GET ?apiversion=5.5&passkey=<public-key>&displaycode=nordstrom-en_us&filter=productid:eq:6525612&page=1&page_size=20&sort=relevancy:desc
JSON{"Accept":"application/json, text/plain, /","Origin":"https://www.nordstrom.com","Referer":"https://www.nordstrom.com/s/product/6525612","User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0 Safari/537.36"}
Nordstrom exposes Bazaarvoice behind the scenes. Identify the passkey/displaycode from Bazaarvoice script tags. Supports Filter=HasPhotos:eq:true for UGC media pulls.

Amazon

API Base URL Method Example Query Required Headers Notes
Product Search (PA-API 5) https://webservices.amazon.com/paapi5/searchitems POST Body: {"Keywords":"vitamin c serum","SearchIndex":"Beauty","ItemPage":1,"Resources":["Images.Primary.Medium","ItemInfo.Title","Offers.Listings.Price"],"PartnerTag":"exampletag-20","PartnerType":"Associates","Marketplace":"www.amazon.com"}
JSON{"Content-Type":"application/json; charset=UTF-8","Accept":"application/json","Host":"webservices.amazon.com","X-Amz-Date":"20240517T193455Z","X-Amz-Target":"com.amazon.paapi5.v1.ProductAdvertisingAPIv1.SearchItems","Authorization":"AWS4-HMAC-SHA256 Credential=/20240517/us-east-1/ProductAdvertisingAPI/aws4_request, SignedHeaders=content-type;host;x-amz-date;x-amz-target, Signature="}
Requires approved Product Advertising API (PA-API 5.0) keys + PartnerTag. SearchIndex must match an allowed browse node (e.g. Beauty). Requests are SigV4 signed and limited to 1 TPS/8640 per day by default.
Product Details (GetItems) https://webservices.amazon.com/paapi5/getitems POST Body: {"ItemIds":["B09V3JGQJ8"],"Resources":["ItemInfo.Title","ItemInfo.Features","Offers.Listings.Price"],"PartnerTag":"exampletag-20","PartnerType":"Associates","Marketplace":"www.amazon.com"}
JSON{"Content-Type":"application/json; charset=UTF-8","Accept":"application/json","Host":"webservices.amazon.com","X-Amz-Date":"20240517T193455Z","X-Amz-Target":"com.amazon.paapi5.v1.ProductAdvertisingAPIv1.GetItems","Authorization":"AWS4-HMAC-SHA256 Credential=/20240517/us-east-1/ProductAdvertisingAPI/aws4_request, SignedHeaders=content-type;host;x-amz-date;x-amz-target, Signature="}
Returns all attributes for up to 10 ASINs per call. Batch lookups move faster when you only request the Resources you actually need (e.g. ItemInfo.Title, Offers.Listings.Availability.Message).
Variation Grid (GetVariations) https://webservices.amazon.com/paapi5/getvariations POST Body: {"ASIN":"B07PGL2ZSL","VariationPage":1,"Resources":["Images.Variants.Medium","ItemInfo.Title","Offers.Listings.Price"],"PartnerTag":"exampletag-20","PartnerType":"Associates","Marketplace":"www.amazon.com"}
JSON{"Content-Type":"application/json; charset=UTF-8","Accept":"application/json","Host":"webservices.amazon.com","X-Amz-Date":"20240517T193455Z","X-Amz-Target":"com.amazon.paapi5.v1.ProductAdvertisingAPIv1.GetVariations","Authorization":"AWS4-HMAC-SHA256 Credential=/20240517/us-east-1/ProductAdvertisingAPI/aws4_request, SignedHeaders=content-type;host;x-amz-date;x-amz-target, Signature="}
Surface child ASINs (shades, sizes, bundles) for a parent product. Paginate with VariationPage (1–10) and use VariationFilters to focus on specific dimensions.
Product Reviews (AJAX) https://www.amazon.com/hz/reviews-render/ajax/reviews/get/ GET ?asin=B09V3JGQJ8&sortBy=recent&reviewerType=all_reviews&pageNumber=1&scope=reviews_widget
JSON{"Accept":"text/html, /","X-Requested-With":"XMLHttpRequest","Referer":"https://www.amazon.com/dp/B09V3JGQJ8","User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0 Safari/537.36","Cookie":"session-id=; session-id-time=; ubid-main="}
Same endpoint Amazon uses for the PDP review widget. Requires valid session cookies (captured from any amazon.com page) and a browser-like UA to avoid 404/robots blocks. Supports filterByStar=one_star, formatType=current_format, etc.

Dermstore

API Base URL Method Example Query Required Headers Notes
Product Search / PLP https://horizon-api.www.dermstore.com/graphql POST Body: {"query":"query Search($query:String!,$options:ProductListInput!){search(query:$query,options:$options){productList{total products{sku title brand{name} priceRange{min{value currency}}}}}}","variables":{"query":"sunscreen","options":{"currency":"USD","shippingDestination":"US","limit":32,"offset":0,"sort":"RELEVANCE","facets":[]}}}
JSON{"Accept":"application/json","Content-Type":"application/json","Origin":"https://www.dermstore.com","Referer":"https://www.dermstore.com/","User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0 Safari/537.36"}
ProductListInput drives pagination (limit/offset), locale (currency, shippingDestination), sorting, and facet filters (facets:[{facetName:"brand",selections:["SkinCeuticals"]}]). Response returns total hits, corrected queries, sponsored placements, etc.
Product Details https://horizon-api.www.dermstore.com/graphql POST Body: {"query":"query Product($sku:SKU!){product(sku:$sku,strict:true){sku title url priceRange{min{value currency}} brand{name} content{...on RichContent{text}} reviews{averageScore total}}}","variables":{"sku":"DS3002"}}
JSON{"Accept":"application/json","Content-Type":"application/json","Origin":"https://www.dermstore.com","Referer":"https://www.dermstore.com/","User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0 Safari/537.36"}
The product query exposes full PDP content (variants, marketing copy, reviews histogram, gallery assets). Pass strict:true to suppress redirects when SKUs are discontinued.
Bulk SKU Lookup https://horizon-api.www.dermstore.com/graphql POST Body: {"query":"query Products($skus:[SKU!]!){products(skus:$skus){sku title brand{name} priceRange{min{value currency}} defaultVariant{availability{stockStatus}}}}","variables":{"skus":["DS3002","DS1034"]}}
JSON{"Accept":"application/json","Content-Type":"application/json","Origin":"https://www.dermstore.com","Referer":"https://www.dermstore.com/","User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0 Safari/537.36"}
Ideal for syncing price/availability across multiple SKUs. Returns an array ordered as requested; useful fields include cheapestVariant, mostExpensiveVariant, and associatedProducts.
Instant Search Suggestions https://horizon-api.www.dermstore.com/graphql POST Body: {"query":"query Instant($query:String!){instantSearch(query:$query,currency:USD,shippingDestination:US,limit:6){suggestions{value type} products{sku title}}}","variables":{"query":"retinol"}}
JSON{"Accept":"application/json","Content-Type":"application/json","Origin":"https://www.dermstore.com","Referer":"https://www.dermstore.com/","User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0 Safari/537.36"}
Mirrors the header search-as-you-type widget. instantSearch returns keyword suggestions plus lightweight product hits. Increase limit up to 20 per request.

Target

API Base URL Method Example Query Required Headers Notes
Product Listing (PLP) https://redsky.target.com/redsky_aggregations/v1/web/plp_search_v1 GET ?count=24&offset=0&keyword=lipstick&channel=WEB&default_purchasability_filter=true&include_sponsored=true&page=%2Fs%2Flipstick&platform=desktop&pricing_store_id=3991&store_ids=3991&visitor_id=019B251831DD0201B5414FCCEBA263BA&key=9f36aeafbe60771e321a7cc95a78140772ab3e96
JSON{"Accept":"application/json","Origin":"https://www.target.com","Referer":"https://www.target.com/s?searchTerm=lipstick","User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0 Safari/537.36","redsky-client-name":"browse","redsky-client-version":"1.0.0"}
Core RedSky search endpoint. count sets page size (up to 96) and offset is zero-based. visitor_id, preferred store IDs, and the long-lived public key can be copied from window.__TGT_DATA__ in view-source.
Product Details (PDP client) https://redsky.target.com/redsky_aggregations/v1/web/pdp_client_v1 GET ?tcin=13860428&pricing_store_id=3991&store_id=3991&has_store_id=true&key=9f36aeafbe60771e321a7cc95a78140772ab3e96&visitor_id=019B251831DD0201B5414FCCEBA263BA
JSON{"Accept":"application/json","Origin":"https://www.target.com","Referer":"https://www.target.com/p/13860428","User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0 Safari/537.36","redsky-client-name":"pdp","redsky-client-version":"1.0.0"}
Returns complete PDP payload (fulfillment, price, bullets, media, variation hierarchy). Add scheduled_delivery_store_id or has_financing_options=true to surface additional sections.
Product Summaries https://redsky.target.com/redsky_aggregations/v1/web/product_summary_with_fulfillment_v1 GET ?tcins=13860428%2C12940253&key=9f36aeafbe60771e321a7cc95a78140772ab3e96&pricing_store_id=3991&store_id=3991&channel=WEB
JSON{"Accept":"application/json","Origin":"https://www.target.com","Referer":"https://www.target.com/","User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0 Safari/537.36","redsky-client-name":"browse","redsky-client-version":"1.0.0"}
Lightweight endpoint for cart/quick-view experiences. Supports up to 40 tcins per call and returns availability per store/ship method.
Search Suggestions (Typeahead) https://typeahead.target.com/search_box/v3/suggestions GET ?query=lipstick&client=web&channel=WEB&count=6&visitor_id=019B251831DD0201B5414FCCEBA263BA&key=9f36aeafbe60771e321a7cc95a78140772ab3e96
JSON{"Accept":"application/json","User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0 Safari/537.36"}
Exposes the auto-complete service. count caps returned suggestions (default 10). visitor_id keeps personalization consistent with other calls.
Product Reviews https://api.bazaarvoice.com/data/reviews.json GET ?apiversion=5.5&passkey=<target-passkey>&displaycode=2070-en_us&filter=productid:eq:13860428&page=1&page_size=20&sort=submissiontime:desc
JSON{"Accept":"application/json","Origin":"https://www.target.com","Referer":"https://www.target.com/p/13860428","User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0 Safari/537.36"}
Target’s PDP widgets are powered by Bazaarvoice. The passkey + displaycode pair ship in apps.bazaarvoice.com/deployments/targetcom/main_site/production/en_US/bv.js. Use filter=rating:eq:5 or include=authors,products for richer payloads.

Repository goals

  • ✅ Provide a single, version-controlled index of high-value retail API endpoints.
  • ✅ Document practical request examples (URL + headers) that community members can reproduce.
  • ✅ Encourage contributions via Pull Requests, similar to other public API catalogs.

Contributing

  1. Fork the repository and create a topical branch (e.g. feature/add-kohls-api).
  2. Add or update rows in the "Contents" table above (keep columns in the documented order).
  3. Include a short description, verified sample query, and minimum headers required to replay the request.
  4. Run any linters or formatters you've configured (none are imposed by default).
  5. Open a Pull Request that briefly explains how you discovered or tested the endpoint.

Need help structuring a new entry? Copy/paste an existing table row and adjust the cells for the new API. Feel free to open issues for discussion or share additional context before submitting a PR.

License

All original content in this repository is released under the MIT License. API responses belong to their respective owners; please follow each retailer's Terms of Service.

About

A collective list of public APIs

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors