Rackets API
List/search rackets and fetch full racket detail records.
Partner access only. Each request must include your partner key. A request with no valid partner key gets 401. See Access or send an email to partners@padelful.com.
GET /api/v1/rackets
Returns a paginated list of rackets.
Query parameters
query(string, optional): fuzzy match by model, brand, or titlebrand(string, optional)shape(enum, optional):Round|Teardrop|DiamondminRating(number, optional): 0 to 10locale(enum, optional):en|es(defaulten)limit(number, optional): 1 to 2000 (default50). The free tier gets 50 rackets at most.offset(number, optional): default0. The free tier reads only the first 200 results: anoffsetof 200 or more gets403FREE_TIER_LIST_LIMIT.includeJsonLd(boolean, optional): defaultfalse
Example request
curl "https://www.padelful.com/api/v1/rackets?locale=en&shape=Round&minRating=8&limit=3&includeJsonLd=true" \
-H "Authorization: Bearer <partner-key>"Example response
{
"data": {
"rackets": [
{
"slug": "example-racket",
"title": "Example Racket",
"model": "Example Racket",
"brand": "Bullpadel",
"rating": "8.6",
"ratings": { "power": 8, "control": 9, "rebound": 8, "maneuverability": 9, "sweetSpot": 9 },
"summary": "A round control racket for intermediate players.",
"reviewUrl": "https://www.padelful.com/en/rackets/example-racket",
"updatedAt": "2026-10-01T00:00:00.000Z",
"prices": [
{
"store": "example-store",
"country": "es",
"price": 149.95,
"currency": "EUR",
"priceEur": 149.95,
"date": "2026-10-31T06:00:00.000Z",
"eanConfirmed": true,
"url": "https://www.padelful.com/en/to/123"
}
],
"attribution": {
"text": "Rating and review by Padelful",
"url": "https://www.padelful.com/en/rackets/example-racket"
},
"shape": "Round",
"eans": ["8435023108235"],
"jsonLd": {
"@context": "https://schema.org",
"@type": "Product"
}
}
],
"pagination": {
"total": 120,
"limit": 3,
"offset": 0,
"hasMore": true,
"nextOffset": 3
}
},
"meta": {
"requestId": "req_123",
"version": "v1",
"locale": "en",
"generatedAt": "2026-02-11T12:00:00.000Z"
}
}GET /api/v1/rackets/{slug}
Returns one racket by slug.
Query parameters
locale(enum, optional):en|es(defaulten)
Example request
curl "https://www.padelful.com/api/v1/rackets/babolat-technical-viper-2025?locale=en" \
-H "Authorization: Bearer <partner-key>"Fields
The tiers give the fields of each tier. The paid fields shape and
eans in the example above are only in a paid-tier response.
prices: the latest price of each store listing, as information. The list is sorted by price.urlgoes to the store through Padelful.eanConfirmedistruewhen the EAN of the store listing is a verified EAN of the racket, elsefalse.eans: the verified EANs of the racket. An EAN is verified when Padelful added it, or when two different stores give it for this racket and no source gives it for another racket. The field is present only when the racket has a verified EAN. Padelful never sends an invented EAN.labSummary: the lab measurements of Padelful, present only when Padelful measured the racket. Each entry is the latest value of onemetric(real_weighting,balance_pointinmmfrom the butt end,swingweightinkg·cm²,sweet_spot_reboundas aratioat apointof the face), withunitSource(brand_sampleorstore_unit),protocolVersionandmeasuredOn.lab(paid tier): all lab rows, with the same fields aslabSummarypluserror(the standard deviation) andsessionRef.priceHistory(detail endpoint, paid tier): each price of the last 365 days, with the same fields asprices, but with noeanConfirmed.
Amazon prices are not in prices and not in priceHistory. Padelful does not track Amazon
prices and does not send alerts for products through Amazon.
Renamed slugs
When Padelful renames a racket, the old slug still works. The API answers 200 with the
current racket and adds data.requestedSlug with the slug of the request. Store the new
racket.slug. A slug that Padelful never used gets 404.
Not found response
{
"error": {
"code": "NOT_FOUND",
"message": "Racket with slug 'unknown' was not found",
"requestId": "req_123"
}
}