Classic Football Shirts APIclassicfootballshirts.co.uk ↗
Search Classic Football Shirts by keyword or team. Get prices, sizes, stock status, SKUs, and product URLs for vintage and classic football shirts.
What is the Classic Football Shirts API?
The Classic Football Shirts API provides 2 endpoints to search and browse the classicfootballshirts.co.uk catalog, returning up to a configurable number of product records per request. The search_products endpoint accepts any keyword — team name, brand, season, or league — and returns structured product data including price, currency, available sizes, stock quantity, and direct product URLs. A dedicated get_products_by_team endpoint scopes the same data to a single club.
curl -X GET 'https://api.parse.bot/scraper/73fcfdc9-d8df-488d-b5fa-66bb10075e9c/search_products?limit=5&query=Arsenal' \ -H 'X-API-Key: $PARSE_API_KEY'
Typed, relational, agent-ready
A generated client with real types, enums, and the links between objects — the structure a flat JSON response can't carry. Autocompletes in your editor and reads cleanly to coding agents.
- Fully typed · autocompletes
- Objects link to objects
- Typed errors & pagination
Typed Python client. Set up the SDK in your uv project, then pull this API’s typed client:
uv add parse-sdk uv run parse init uv run parse add --marketplace classicfootballshirts-co-uk-api
uv run parse add --marketplace pulls a pinned snapshot of this canonical API — it won’t change underneath you. To customize it, subscribe and swap to your own copy.
"""Walkthrough: Classic Football Shirts SDK — search and browse vintage kits."""
from parse_apis.classic_football_shirts_api import ClassicFootballShirts, ProductNotFound
client = ClassicFootballShirts()
# Search for products by keyword — limit= caps total items fetched.
for product in client.products.search(query="Arsenal", limit=5):
print(product.name, product.price, product.currency, product.condition)
# Get products for a specific team, take the first one for drill-down.
shirt = client.products.by_team(team="Liverpool", limit=1).first()
if shirt:
print(shirt.name, shirt.sku, shirt.season, shirt.brand)
print("Sizes:", shirt.sizes, "Stock:", shirt.stock_quantity)
# Typed error handling around a search that may return nothing.
try:
for item in client.products.search(query="Barcelona", limit=3):
print(item.name, item.price, item.availability)
except ProductNotFound as exc:
print(f"No products found: {exc}")
print("exercised: products.search / products.by_team / ProductNotFound error catch")
Full-text search over the Classic Football Shirts catalog. Returns products matching the query keyword with prices, sizes, availability, and metadata. Results are capped by the limit parameter. The search matches product names, teams, seasons, and brands.
| Param | Type | Description |
|---|---|---|
| limit | integer | Maximum number of products to return. |
| queryrequired | string | Search keyword to find products (e.g. 'Arsenal', 'Liverpool', 'Barcelona', 'MLS', 'adidas'). |
{
"type": "object",
"fields": {
"query": "string - the search query used",
"total": "integer - number of products returned",
"products": "array of product objects with name, sku, price, currency, sizes, availability, stock_quantity, product_url, image_url, team, season, brand, style, condition"
},
"sample": {
"data": {
"query": "Arsenal",
"total": 4,
"products": [
{
"sku": "HR6933",
"name": "2023-24 Arsenal Third Shorts",
"team": "Arsenal",
"brand": "adidas",
"price": 19.99,
"sizes": [
"XS"
],
"style": "Shorts",
"season": "2023-24",
"currency": "GBP",
"condition": "Brand New - With Tags",
"image_url": "https://www.classicfootballshirts.com/pub/media/catalog/productw=150,h=150,q=90,f=webp/pub/media/catalog/product//4/0/4066761519058-1_un9gytjx5ptmbxrx.jpg",
"product_url": "https://www.classicfootballshirts.com/2023-24-arsenal-third-shortshr6933.html",
"availability": "In Stock",
"stock_quantity": 12
}
]
},
"status": "success"
}
}About the Classic Football Shirts API
Endpoints and Inputs
The API exposes two GET endpoints. search_products takes a required query string and an optional limit integer. The query matches against product names, team names, seasons, and brands, so searches like 'adidas', 'MLS', or '1994' work alongside team-specific terms. get_products_by_team takes a required team string and the same optional limit parameter, and is the cleaner choice when you need all shirts for a specific club like Arsenal or Barcelona without unrelated matches.
Response Shape
Both endpoints return a total count, the original search term (query or team), and a products array. Each product object includes name, sku, price, currency, sizes (an array of available size options), availability, stock_quantity, product_url, image_url, team, and season. The sku field enables deduplication or cross-referencing across requests, and product_url links directly to the listing on the site.
Coverage and Behavior
Results are drawn from the live Classic Football Shirts catalog, which focuses on retro, vintage, and hard-to-find football shirts from clubs and national teams across multiple decades. The limit parameter caps results per call; without it, the endpoint applies a default cap. Because the catalog is commercially active, price and stock fields reflect current availability rather than historical snapshots.
The Classic Football Shirts API is a managed, monitored endpoint for classicfootballshirts.co.uk — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when classicfootballshirts.co.uk changes and a check fails, the API is automatically queued for repair and re-verified. It is built to keep working as the site underneath it changes.
This isn't an official classicfootballshirts.co.uk API — it's an independent, maintained REST wrapper over public data. Where the source has no official API (or only a limited one), Parse gives you a stable contract over a source that never promised one, and keeps it current. Need a new endpoint or field? You can revise it yourself in plain English and the agent rebuilds it against the live site in minutes — contributing the change back to the shared API is free.
Will this API break when the source site changes?+
Is this an official API from the source site?+
Can I fix or extend this API myself if I need a new endpoint or field?+
What happens if I call an endpoint that has an issue?+
- Build a price tracker that monitors
priceandstock_quantitychanges for a specific team's shirts over time. - Populate a resale or fan marketplace with verified
sku,image_url, andproduct_urldata from the Classic Football Shirts catalog. - Create a kit discovery tool that lets users filter shirts by
teamandseasonacross multiple clubs. - Aggregate availability data across sizes using the
sizesarray to alert buyers when a specific size comes back in stock. - Generate a curated gift guide by querying brand keywords like
'Umbro'or'Le Coq Sportif'viasearch_products. - Build a club-specific shirt archive page by calling
get_products_by_teamfor each club in a dataset and storing the resulting product records. - Cross-reference
skuvalues between calls to identify catalog additions or removals over successive polling intervals.
| Tier | Price | Credits/month | Rate limit |
|---|---|---|---|
| Free | $0/mo | 100 | 5 req/min |
| Hobby | $30/mo | 1,000 | 20 req/min |
| Developer | $100/mo | 5,000 | 100 req/min |
One credit = one API call regardless of which marketplace API you call. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.
Does Classic Football Shirts have an official public developer API?+
What does the `sizes` field return, and does it indicate per-size stock levels?+
sizes field returns an array of size options available for the product. Overall stock is reflected in stock_quantity and availability, but per-size stock counts are not broken out as separate fields in the current response shape. You can fork this API on Parse and revise it to add per-size inventory tracking if your use case requires it.Does the API cover product condition grades, seller notes, or provenance details for vintage shirts?+
Can I retrieve all products in the catalog without a specific query or team name?+
query string or a team string. There is no browse-all or paginated full-catalog endpoint currently. You can fork the API on Parse and revise it to add a category-browse or full-catalog pagination endpoint.