ScavioScavio
Pricing
Tools
Sign InsGet Startedg
Blog
Vinted9 min de lectureNov 9, 2026

API Vinted : récupérer les annonces, les prix et les vendeurs de vinted.fr en JSON, étape par étape

Avec l'API Vinted de Scavio, un POST renvoie 96 annonces vinted.fr avec prix, frais Vinted et total ; la fiche, le vendeur et ses avis suivent. Pas à pas.

Scavio Team

Nov 9, 2026

Essayez l'API Vinted gratuitement
scavio
France / Price monitoring
Vinted

Pour récupérer les données Vinted dans du code, utilisez l'API Vinted de Scavio. Un POST /api/v1/vinted/search avec "country": "fr" et une requête renvoie 96 annonces de vinted.fr par appel, chacune avec le prix, les frais Vinted, le total payé par l'acheteur hors livraison, la taille, l'état, les photos et l'identifiant du vendeur. Traduisez d'abord marques, catégories et états en identifiants avec /brands, /categories et /filters, lisez une annonce en entier (description, photos, vendue ou réservée) avec /product, et vérifiez le vendeur avec /seller et /seller-feedback. Chaque appel coûte 1 crédit, sur n'importe lequel des 27 sites Vinted.

L'API officielle de Vinted, Vinted Pro Integrations, est réservée aux entreprises Vinted Pro admises sur liste et gère leurs propres articles et commandes ; elle ne cherche pas dans la marketplace. Les étapes ci-dessous donnent le côté marketplace en JSON avec une seule clé Scavio. Toutes les réponses ont été capturées le 9 novembre 2026 sur vinted.fr, et l'exemple suit une robe Sézane en taille S / 36.

Étape 1 : transformer les noms en identifiants

Les filtres de recherche attendent des identifiants, pas des noms. Partez de ce que tapent les acheteurs :

Bash
curl -s https://api.scavio.dev/api/v1/vinted/suggestions \
  -H "Authorization: Bearer $SCAVIO_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"country": "fr", "query": "robe séz"}'

data capturé (6 suggestions sur 10 retirées) :

JSON
{
  "country": "fr",
  "query": "robe séz",
  "count": 10,
  "suggestions": [
    {"text": "robe sézane hiver", "type": "non_parent_cat+brand+attr"},
    {"text": "robe sézane longue", "type": "non_parent_cat+brand+attr"},
    {"text": "robe sézane laine", "type": "non_parent_cat+brand+attr"},
    {"text": "robe sézane manches longues", "type": "non_parent_cat+brand+attr"}
  ]
}

Les suggestions arrivent dans la langue du site : ce que tapent les acheteurs de vinted.fr, utile aussi pour rédiger des titres d'annonces. Puis l'identifiant de la marque :

Bash
curl -s https://api.scavio.dev/api/v1/vinted/brands \
  -H "Authorization: Bearer $SCAVIO_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"country": "fr", "query": "sezane"}'

data capturé (8 marques sur 10 retirées) :

JSON
{
  "country": "fr",
  "query": "sezane",
  "count": 10,
  "brands": [
    {"id": 38437, "title": "Sézane", "slug": "sezane", "url": "https://www.vinted.fr/brand/38437-sezane", "item_count": 1277896, "is_luxury": true, "requires_authenticity_check": true},
    {"id": 5805509, "title": "Sézane x La Redoute", "slug": "sezane-x-la-redoute", "url": "https://www.vinted.fr/brand/5805509-sezane-x-la-redoute", "item_count": 1792, "is_luxury": true, "requires_authenticity_check": true}
  ]
}

La correspondance est approximative : la même réponse liste Sea New York ou Stefanel. Prenez le title exact. item_count est le nombre d'annonces de la marque sur ce site, 1 277 896 pour Sézane, ce qui fait de /brands un moyen rapide de mesurer une marque. La catégorie vient de /categories ({"country": "fr", "parent_id": 1904} renvoie l'arbre Femmes) ou du category.path d'une fiche : Femmes > Vêtements > Robes porte l'identifiant 10.

Étape 2 : les identifiants d'état et de taille, avec leurs compteurs

Bash
curl -s https://api.scavio.dev/api/v1/vinted/filters \
  -H "Authorization: Bearer $SCAVIO_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"country": "fr", "filter": "status", "query": "robe sézane", "category_id": 10}'

data capturé (descriptions retirées) :

JSON
{
  "country": "fr",
  "filter": "status",
  "search_param": "status_ids",
  "query": "robe sézane",
  "category_id": 10,
  "count": 5,
  "options": [
    {"id": 6, "title": "Neuf avec étiquette", "item_count": 5985},
    {"id": 1, "title": "Neuf sans étiquette", "item_count": 11292},
    {"id": 2, "title": "Très bon état", "item_count": 40814},
    {"id": 3, "title": "Bon état", "item_count": 4186},
    {"id": 4, "title": "Satisfaisant", "item_count": 385}
  ]
}

search_param indique le paramètre de recherche qui reçoit ces identifiants. Les compteurs sont en direct : sur vinted.fr, 62 662 annonces correspondaient à « robe sézane » dans Robes, dont 40 814 en très bon état. Le même endpoint accepte "filter": "size", "color" ou "material" : pour les robes, il a renvoyé 70 tailles, dont S / 36 / 8 avec l'identifiant 3 (22 481 annonces). Les libellés suivent la langue du site, les identifiants sont les mêmes partout.

Étape 3 : rechercher avec les filtres

Bash
curl -s https://api.scavio.dev/api/v1/vinted/search \
  -H "Authorization: Bearer $SCAVIO_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"country": "fr", "query": "robe sézane", "brand_ids": [38437], "category_id": 10, "size_ids": [3], "status_ids": [2], "price_to": 60, "sort": "newest_first"}'

data capturé en 3,8 secondes (94 annonces sur 96 retirées, identifiants des vendeurs particuliers supprimés) :

JSON
{
  "country": "fr",
  "currency": "EUR",
  "query": "robe sézane",
  "page": 1,
  "per_page": 96,
  "count": 96,
  "listed_results": 960,
  "total_is_capped": true,
  "total_pages": 10,
  "has_more": true,
  "filters": {
    "query": "robe sézane",
    "category_ids": [10],
    "brand_ids": [38437],
    "status_ids": [2],
    "size_ids": [3],
    "color_ids": [],
    "material_ids": [],
    "price_from": null,
    "price_to": 60,
    "currency": "EUR",
    "sort": "newest_first"
  },
  "items": [
    {
      "id": 10731896932,
      "title": "Robe Sézane bleu marine avec motifs",
      "url": "https://www.vinted.fr/items/10731896932-robe-sezane-bleu-marine-avec-motifs",
      "price": 35,
      "currency": "EUR",
      "price_with_discount": null,
      "service_fee": 2.45,
      "total_price": 37.45,
      "brand": "Sézane",
      "size": "EU 36",
      "condition": "Très bon état",
      "favourite_count": 0,
      "is_promoted": false,
      "image": "https://images1.vinted.net/t/01_00eac_Uh9wzN2GT1xLrUtXzBkJrEd2/f800/a0494fd8.webp?s=2423c979f51d5df525520b1d4a074f28bd31377d",
      "thumbnail": "https://images1.vinted.net/t/01_00eac_Uh9wzN2GT1xLrUtXzBkJrEd2/310x430/a0494fd8.webp?s=7dfd0eff85786227313e516394d30db72b45af17",
      "photos": ["https://images1.vinted.net/t/01_00eac_Uh9wzN2GT1xLrUtXzBkJrEd2/f800/a0494fd8.webp?s=2423c979f51d5df525520b1d4a074f28bd31377d"],
      "seller": {"is_business": false}
    },
    {
      "id": 10732351078,
      "title": "Sézane Leopard Dress - Size 36",
      "url": "https://www.vinted.fr/items/10732351078-sezane-leopard-dress-size-36",
      "price": 32,
      "currency": "EUR",
      "price_with_discount": null,
      "service_fee": 2.3,
      "total_price": 34.3,
      "brand": "Sézane",
      "size": "EU 36",
      "condition": "Très bon état",
      "favourite_count": 7,
      "is_promoted": false,
      "image": "https://images1.vinted.net/t/01_002fe_a5apKcGVo3RMdTjkbfonbxxa/f800/9dbc2a6a.webp?s=b2196390423f7c082819d12506efd8824576fd89",
      "thumbnail": "https://images1.vinted.net/t/01_002fe_a5apKcGVo3RMdTjkbfonbxxa/310x430/9dbc2a6a.webp?s=00eda135af468d93a80520c42876cb107adf4eaa",
      "photos": ["https://images1.vinted.net/t/01_002fe_a5apKcGVo3RMdTjkbfonbxxa/f800/9dbc2a6a.webp?s=b2196390423f7c082819d12506efd8824576fd89"],
      "seller": {"is_business": false}
    }
  ]
}

Lisez une ligne ainsi : l'annonce demande 35 €, les frais Vinted (service_fee) sont de 2,45 €, l'acheteur paie donc 37,45 € hors livraison. Sur les 480 annonces Sézane relevées ce jour-là, les frais valaient toujours 0,70 € plus 5 % du prix ; la livraison n'est pas renvoyée. Le bloc filters montre ce que Vinted a appliqué : tous les identifiants envoyés y sont, donc les 96 lignes sont bien en S / 36, en très bon état et à 60 € au plus. La deuxième ligne, « Sézane Leopard Dress - Size 36 », rappelle que le catalogue européen est partagé : des annonces rédigées dans d'autres langues remontent sur vinted.fr, en euros. listed_results: 960 avec total_is_capped: true signifie au moins 960 correspondances, pas exactement 960 : Vinted sert 10 pages de 96, pas plus. Pour une étude de prix, une recherche par état donne l'écart ; sur cette requête, le prix médian allait de 85 € neuf avec étiquette à 20 € en état satisfaisant :

Robes Sézane sur vinted.fr le 9 novembre 2026 : prix médian demandé 85 euros neuves avec étiquette, 70 neuves sans étiquette, 57 en très bon état, 25 en bon état et 20 en état satisfaisant, sur 96 annonces par état et cinq appels de recherche Scavio

Étape 4 : lire une annonce et savoir si elle est vendue

Bash
curl -s https://api.scavio.dev/api/v1/vinted/product \
  -H "Authorization: Bearer $SCAVIO_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"country": "fr", "item_id": 10731896932}'

data capturé en 10,7 secondes (3 photos sur 4 retirées ; pseudo, identifiant et URL de profil de la vendeuse supprimés) :

JSON
{
  "country": "fr",
  "id": 10731896932,
  "url": "https://www.vinted.fr/items/10731896932-robe-sezane-bleu-marine-avec-motifs",
  "title": "Robe Sézane bleu marine avec motifs",
  "description": "Robe bleu marine avec motifs roses et oranges, presque jamais portée.",
  "description_translated": false,
  "price": 35,
  "currency": "EUR",
  "brand": {"id": 38437, "name": "Sézane"},
  "size": null,
  "condition": "Très bon état",
  "color": "Marine, Rouge",
  "material": null,
  "uploaded_relative": "Il y a une heure",
  "category": {
    "id": 1056,
    "name": "Midi",
    "path": [
      {"id": 1904, "title": "Femmes", "url": "https://www.vinted.fr/catalog/1904-women"},
      {"id": 4, "title": "Vêtements", "url": "https://www.vinted.fr/catalog/4-clothing"},
      {"id": 10, "title": "Robes", "url": "https://www.vinted.fr/catalog/10-dresses"},
      {"id": 1056, "title": "Midi", "url": "https://www.vinted.fr/catalog/1056-midi-dresses"}
    ]
  },
  "photos": ["https://images1.vinted.net/t/01_00eac_Uh9wzN2GT1xLrUtXzBkJrEd2/f800/a0494fd8.webp?s=2423c979f51d5df525520b1d4a074f28bd31377d"],
  "favourite_count": 0,
  "is_reserved": false,
  "is_sold": false,
  "status_label": null,
  "can_buy": true,
  "instant_buy": true,
  "is_hidden": false,
  "seller": {"is_business": false, "feedback_count": 16, "feedback_reputation": 0.84, "badges": []}
}

Deux détails à connaître. uploaded_relative est la formule de Vinted (« Il y a une heure »), pas un horodatage. Et la fiche affiche le prix dans la devise du vendeur : en euros ici, mais pas toujours. Le même jour sur vinted.co.uk, un jean affiché 10,43 £ dans la recherche est revenu de /product à 20 AUD, car son vendeur est en Australie. Comparez des prix de recherche entre eux. La fiche ne renvoie pas les frais : prenez service_fee dans la ligne de recherche. feedback_reputation est une note de 0 à 1.

Une annonce vendue répond toujours, avec son dernier prix, "is_sold": true, "status_label": "Sold" et "can_buy": false ; une annonce réservée a "is_reserved": true. C'est ainsi qu'un outil de suivi sait s'arrêter : relisez l'article, et quand is_sold ou is_reserved passe à true, retirez-le. La recherche ne renvoie jamais d'annonces vendues : c'est un article à la fois, pas un historique des ventes.

Étape 5 : vérifier le vendeur

Le seller.id d'une ligne de recherche ou d'une fiche alimente trois endpoints. L'exemple est une boutique professionnelle, la_casa_du_phoenix (8670378) :

Bash
curl -s https://api.scavio.dev/api/v1/vinted/seller \
  -H "Authorization: Bearer $SCAVIO_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"country": "fr", "user_id": 8670378}'

data capturé en 3,5 secondes :

JSON
{
  "country": "fr",
  "id": 8670378,
  "login": "la_casa_du_phoenix",
  "profile_url": "https://www.vinted.fr/member/8670378-lacasaduphoenix",
  "is_business": true,
  "feedback_count": 1907,
  "feedback_reputation": 1,
  "positive_feedback_count": 1894,
  "neutral_feedback_count": 4,
  "negative_feedback_count": 9,
  "item_count": 330,
  "country_code": "FR",
  "country_name": "France",
  "city": null,
  "verification": {"email": true, "facebook": false, "google": false},
  "avg_response_time": null,
  "is_on_holiday": false,
  "last_seen_date": "2026-11-09"
}

feedback_reputation: 1 côtoie 9 avis négatifs : citez les compteurs, pas la note, quand les réclamations comptent. Puis les avis, jusqu'à 50 par page :

Bash
curl -s https://api.scavio.dev/api/v1/vinted/seller-feedback \
  -H "Authorization: Bearer $SCAVIO_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"country": "fr", "user_id": 8670378, "limit": 50}'

data capturé (48 lignes sur 50 retirées) :

JSON
{
  "country": "fr",
  "user_id": 8670378,
  "page": 1,
  "per_page": 50,
  "total_results": 1907,
  "total_pages": 39,
  "count": 50,
  "has_more": true,
  "feedback": [
    {"id": 4710949781, "rating": 5, "text": "J’adore ! Vendeuse très agréable et sérieuse.", "created_at": "2026-11-09T09:25:39.000Z", "is_automatic": false, "seller_reply": null},
    {"id": 4709339023, "rating": 5, "text": "Évaluation automatique : vente réalisée avec succès", "created_at": "2026-11-08T18:45:07.000Z", "is_automatic": true, "seller_reply": null}
  ]
}

22 des 50 lignes étaient des évaluations automatiques de Vinted : filtrez sur is_automatic avant de résumer ce qu'ont écrit les acheteurs. Les 28 autres, du 26 octobre au 9 novembre, comptaient 27 notes de 5 étoiles et une note d'une étoile, avec la réponse de la boutique dans seller_reply. Vinted note les deux côtés d'une transaction, et quelques avis décrivent le compte comme acheteur (« Ottima acquirente »). Les lignes ne portent ni auteur ni article, par conception. /seller-products avec le même user_id et "limit": 96 a renvoyé la première page de ses 330 articles (4 pages), de 18 € à 147 €, chacun avec frais, total et indicateurs is_sold et is_reserved.

Étape 6 : créer un bot d'alertes Vinted avec l'API

Python
import time
import requests

KEY = "sk_live_votre_cle"  # depuis le tableau de bord Scavio
BODY = {"country": "fr", "query": "robe sézane", "brand_ids": [38437], "category_id": 10,
        "size_ids": [3], "status_ids": [2], "price_to": 60, "sort": "newest_first"}
vus = set()

while True:
    r = requests.post("https://api.scavio.dev/api/v1/vinted/search", json=BODY,
                      headers={"Authorization": f"Bearer {KEY}"}, timeout=60)
    for item in r.json()["data"]["items"]:
        if item["id"] not in vus:
            vus.add(item["id"])
            print(item["total_price"], item["currency"], item["title"], item["url"])
    time.sleep(300)  # une vérification toutes les 5 minutes : 288 crédits par jour

Au premier passage, vus se remplit avec les 96 annonces actuelles ; ensuite, seules les nouvelles s'affichent. Envoyez-les sur Discord, Telegram ou par e-mail au lieu de les afficher. L'API ne renvoie que des données : elle n'achète pas, ne fait pas d'offre et n'écrit pas aux vendeurs, et elle ne se connecte à aucun compte Vinted.

Les 9 endpoints

EndpointCe qu'il renvoieCrédits
/api/v1/vinted/search96 annonces par page, pages 1 à 10, avec prix, frais Vinted, total, taille, état, photos et identifiant du vendeur, plus les filtres appliqués1
/api/v1/vinted/productUne annonce par identifiant ou URL : description, toutes les photos, chemin de catégorie, état vendu ou réservé, note du vendeur1
/api/v1/vinted/sellerLe profil public d'un membre : note, avis positifs, neutres et négatifs, articles en ligne, vérifications1
/api/v1/vinted/seller-productsLes articles d'un membre, jusqu'à 96 par page, avec frais, total et indicateurs vendu et réservé1
/api/v1/vinted/seller-feedbackLes avis, jusqu'à 50 par page, du plus récent au plus ancien, avec l'indicateur automatique et la réponse du membre1
/api/v1/vinted/brandsLes identifiants de marque avec nombre d'annonces et indicateurs luxe et vérification d'authenticité1
/api/v1/vinted/suggestionsJusqu'à 10 suggestions de la barre de recherche, dans la langue du site1
/api/v1/vinted/filtersLes identifiants de taille, d'état, de couleur ou de matière avec compteurs en direct1
/api/v1/vinted/categoriesL'arborescence des catégories dans la langue du site, ou un sous-arbre1

Les erreurs ne sont pas facturées : un article, un membre ou une catégorie inconnu renvoie une 404, une panne passagère une 502. Chaque endpoint accepte country : fr (par défaut) et les autres sites européens, uk, us ou au. Il n'y a pas de recherche dans les annonces vendues, ni de frais de livraison, ni d'articles similaires. Pour comparer toutes les options Vinted, lisez les meilleures API Vinted en 2026 ; pour une alerte sur une recherche enregistrée, ce cas pratique.

Pour commencer

  1. Inscrivez-vous sur dashboard.scavio.dev/sign-up : 50 crédits offerts, sans carte bancaire, de quoi faire 50 appels Vinted.
  2. Copiez votre clé API depuis le tableau de bord.
  3. Envoyez un POST sur /api/v1/vinted/search avec {"country": "fr", "query": "robe sézane"} et votre clé dans l'en-tête Authorization.

Essayez l'API Vinted gratuitement dans le playground, utilisez le SDK Python, ou appelez-la depuis Claude et d'autres agents via le serveur MCP.

Références : API Vinted de Scavio · recherche · fiche article · vendeur · articles d'un vendeur · avis · marques · filtres · catégories · suggestions

Frequently asked questions

Comment trouver l'identifiant d'une marque ou d'une catégorie Vinted ?

Appelez /api/v1/vinted/brands avec un nom : « sezane » a renvoyé Sézane, identifiant 38437, avec 1 277 896 annonces sur vinted.fr le 9 novembre 2026. La catégorie se lit dans le champ category.path d'une fiche article ou dans /api/v1/vinted/categories (Femmes > Vêtements > Robes porte l'identifiant 10). /api/v1/vinted/filters donne les identifiants d'état, de taille, de couleur et de matière avec leur nombre d'annonces. Les identifiants sont les mêmes sur les 27 sites.

Pourquoi une annonce en allemand ou en anglais apparaît-elle sur vinted.fr ?

Les sites Vinted européens partagent un même catalogue transfrontalier. Une recherche sur vinted.fr renvoie donc aussi des annonces publiées depuis l'Allemagne, l'Espagne ou l'Italie, affichées en euros. Sur nos 480 annonces de robes Sézane, 408 titres contenaient le mot « robe ». Pour un résultat plus français, cherchez avec des mots français et un filtre de marque ou de catégorie.

Combien de résultats peut renvoyer une recherche Vinted ?

96 par page et 10 pages, donc 960 au plus. Quand total_is_capped vaut true, il y a plus de correspondances ; affinez avec une catégorie, une marque, une taille, un état ou une fourchette de prix et lancez chaque tranche séparément.

Peut-on savoir si un article Vinted est vendu ?

Oui, article par article. /api/v1/vinted/product renvoie is_sold à true, status_label « Sold » et can_buy à false pour une annonce vendue, avec son dernier prix ; is_reserved signale une annonce réservée. La recherche ne renvoie que des annonces encore en vente : il n'existe pas de liste des articles vendus à parcourir.

Combien coûte l'accès aux données Vinted avec Scavio ?

Chaque endpoint Vinted coûte 1 crédit par appel, soit 1 $ les 1 000 requêtes au tarif Growth de 1 $ les 1 000 crédits. Une recherche renvoie 96 annonces pour ce crédit. Les erreurs, comme un article inconnu (404), ne sont pas facturées, et un nouveau compte reçoit 50 crédits sans carte bancaire.

Les données Vinted en JSON

  • Recherche par marque, taille, état et prix
  • État vendu ou réservé de chaque annonce
  • Notes et avis des vendeurs, 1 crédit l'appel
Essayez l'API Vinted gratuitement

50 free credits, no credit card

On this page

  1. Étape 1 : transformer les noms en identifiants
  2. Étape 2 : les identifiants d'état et de taille, avec leurs compteurs
  3. Étape 3 : rechercher avec les filtres
  4. Étape 4 : lire une annonce et savoir si elle est vendue

Related articles

View all
  • scavio
    Bots / France
    Vinted
    Une alerte mail ou push sur une recherche Vinted enregistrée ? Une recherche API triée par date suffit
  • scavio
    Comparison / France
    Vinted
    Les 6 meilleures API Vinted en 2026 : Scavio renvoie 96 annonces par appel, frais Vinted inclus
ScavioScavio

One scraper API for every social, search, e-commerce and real estate platform. Built for AI agents.

Product

  • Features
  • Pricing
  • Dashboard
  • Affiliates

Developers

  • Documentation
  • API Reference
  • Quickstart
  • MCP Integration
  • Python SDK

Alternatives

  • Tavily Alternative
  • SerpAPI Alternative
  • Firecrawl Alternative
  • Exa Alternative
  • Serper Alternative
  • Tavily vs Scavio
  • SerpAPI vs Scavio
  • All alternatives
  • Compare Scavio vs alternatives

Search APIs

  • Google Search API
  • Amazon Product API
  • YouTube API
  • Reddit API
  • Walmart Product API
  • TikTok API
  • Instagram API

Tools

  • All Tools

© 2026 Scavio. All rights reserved.

Featured on TAAFT
Terms of ServicePrivacy Policy