Foot Locker
Foot Locker Sale & Deals API
Foot Locker deal listings on any of 13 storefronts: sale (every storefront), Foot Locker Exclusives (us and ca only) or discount_eligible, the items a promo code applies to. Filter by brand, gender, color, price bucket and any facet, and sort by relevance, price, new arrivals, top rated, name or brand. 48 items per page with id (the SKU), title, brand, URL, image, price, list price, percent off, the European 30-day lowest price, sale, new, launch and members-only-sale flags, rating, review count and colorways with their own prices. Also returns total, total_pages, the filters applied, every facet with its counts (any value works in filters) and data_as_of: listings can be a few hours old. Costs 1 credit per request.
Authorizations
AuthorizationstringheaderrequiredBearer authentication header of the form Bearer <token>, where <token> is your Scavio API key (e.g. Bearer sk_live_your_key).
Body
application/jsontypeenum<string>default:saleThe deal listing.
Example: sale
sale— Sale items. The default; every storefront.exclusives— Foot Locker Exclusives. us and ca only.discount_eligible— Items a promo code applies to (Promo Code Eligible).
countryenum<string>default:usThe Foot Locker storefront. Titles and facet labels come back in the storefront's language, prices in its currency.
Example: de
us— United States (footlocker.com), USD. The default.ca— Canada (footlocker.ca), CAD. language en (default) or fr.gb— United Kingdom (footlocker.co.uk), GBP.de— Germany (footlocker.de), EUR.fr— France (footlocker.fr), EUR.it— Italy (footlocker.it), EUR.es— Spain (footlocker.es), EUR.nl— Netherlands (footlocker.nl), EUR.be— Belgium (footlocker.be), EUR. language nl (default) or fr.at— Austria (footlocker.at), EUR.ie— Ireland (footlocker.ie), EUR.au— Australia (footlocker.com.au), AUD.nz— New Zealand (footlocker.co.nz), NZD.
languageenum<string>Only for country ca (en default, or fr) and be (nl default, or fr). Other storefronts have one language.
Example: fr
en— English. The default on ca.fr— French, on ca or be.nl— Dutch. The default on be.
brandstring | string[]Only this brand, or any of several (up to 20): "Nike", "Jordan", "adidas", "New Balance", "HOKA". Case does not matter.
Example: Jordan
pageintegerResults page, 1-200, 48 items per page. A page past the last one returns an empty items list with the real total. Defaults to 1.
Example: 2
sortenum<string>default:relevanceThe order of the listing.
relevance— The site's Featured order. The default.price_low_to_high— Cheapest first.price_high_to_low— Most expensive first.new_arrivals— Newest first.top_rated— Highest customer rating first.name_az— Product name A-Z.brand_az— Brand A-Z.
genderstring | string[]Gender value(s) as facets gender lists them ("Men's", "Women's", "Boys'"; in the storefront's language).
Example: Women's
colorstring | string[]Color value(s) as facets primaryColor lists them.
Example: Black
price_rangestring | string[]Price bucket value(s) as facets price lists them (25-50, 50-75, 75-100, 100-150, 150-inf), in the storefront's currency.
Example: 100-150
on_salebooleanOnly items on sale.
Example: true
filtersobjectAny filter from a previous response: {facets[].id: facets[].values[].value, or a list of values}. Values of one filter are OR, filters combine (AND). E.g. {"mensShoesSize": "10.0"}, {"womensShoesSize": "8.0"}, {"style": "Casual Sneakers"}, {"sport": "Running"}, {"eligibleForDiscount": "True"}.
Example: {"mensShoesSize": "10.0", "primaryColor": "Black"}
Request
from scavio import ScavioClient
from datetime import datetime, timezone
client = ScavioClient(api_key="sk_live_your_key")
# Snapshot the US sale for men's size 10 and keep your own history:
# the API returns today's price only.
res = client.footlocker.deals(type="sale", filters={"mensShoesSize": "10.0"})["data"]
seen = datetime.now(timezone.utc).isoformat()
for item in res["items"]:
print(seen, item["id"], item["title"], item["list_price"], item["price"], item["percent_off"])Response