Padelful Docs

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 title
  • brand (string, optional)
  • shape (enum, optional): Round | Teardrop | Diamond
  • minRating (number, optional): 0 to 10
  • locale (enum, optional): en | es (default en)
  • limit (number, optional): 1 to 2000 (default 50). The free tier gets 50 rackets at most.
  • offset (number, optional): default 0. The free tier reads only the first 200 results: an offset of 200 or more gets 403 FREE_TIER_LIST_LIMIT.
  • includeJsonLd (boolean, optional): default false

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 (default en)

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. url goes to the store through Padelful. eanConfirmed is true when the EAN of the store listing is a verified EAN of the racket, else false.
  • 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 one metric (real_weight in g, balance_point in mm from the butt end, swingweight in kg·cm², sweet_spot_rebound as a ratio at a point of the face), with unitSource (brand_sample or store_unit), protocolVersion and measuredOn.
  • lab (paid tier): all lab rows, with the same fields as labSummary plus error (the standard deviation) and sessionRef.
  • priceHistory (detail endpoint, paid tier): each price of the last 365 days, with the same fields as prices, but with no eanConfirmed.

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"
  }
}

On this page