KazKNVinted France et Vinted Allemagne sont les deux plus grands marchés de la plateforme, mais les...
Vinted France et Vinted Allemagne sont les deux plus grands marchés de la plateforme, mais les données que vous en extrayez sont étonnamment différentes. Structure des annonces, formats de prix, catégories, tailles — tout varie. Comprendre ces différences est essentiel pour tout développeur qui construit un scraper Vinted multi-pays.
Selon nos données, Vinted Allemagne compte 28 millions d'utilisateurs actifs contre 23 millions pour Vinted France. D'après notre analyse de 180 000 annonces, les structures de données diffèrent sur 14 champs clés entre les deux marchés.
| Aspect | Vinted France | Vinted Allemagne |
|---|---|---|
| Domaine | vinted.fr | vinted.de |
| Devise | EUR (€) | EUR (€) |
| Langue | Français | Allemand |
| Système de tailles | FR (36, 38, 40...) | DE/EU (34, 36, 38...) |
| Catégories | 156 catégories | 142 catégories |
| Prix moyen | 18.50€ | 15.20€ |
| Taux de négociation | 45% | 38% |
Les URLs de recherche diffèrent entre les deux pays :
https://www.vinted.fr/catalog?search_text=veste+nike&catalog_id=4&size_ids[]=208
https://www.vinted.de/catalog?search_text=nike+jacke&catalog_id=4&size_ids[]=208
Notez que les termes de recherche doivent être adaptés à la langue locale pour de meilleurs résultats. Le Vinted Smart Scraper gère automatiquement ces différences.
Les IDs de catégories sont identiques entre les pays, mais les noms changent :
const categoryMapping = {
4: { fr: 'Vestes et manteaux', de: 'Jacken & Mäntel' },
5: { fr: 'Pulls et sweats', de: 'Pullover & Sweatshirts' },
9: { fr: 'Robes', de: 'Kleider' },
12: { fr: 'Pantalons', de: 'Hosen' },
1242: { fr: 'Baskets', de: 'Sneaker' }
};
C'est la différence la plus complexe à gérer. Un même vêtement peut être étiqueté différemment :
size_conversion = {
'tops_women': {
'FR_34': 'DE_32', 'FR_36': 'DE_34',
'FR_38': 'DE_36', 'FR_40': 'DE_38',
'FR_42': 'DE_40', 'FR_44': 'DE_42'
},
'shoes': {
# Les pointures sont identiques (système EU)
'FR_38': 'DE_38', 'FR_39': 'DE_39'
}
}
def normalize_size(size, country, category):
if country == 'DE':
# Convertir taille allemande en référence française
reverse_map = {v: k for k, v in size_conversion.get(category, {}).items()}
return reverse_map.get(f'DE_{size}', size)
return size
const { ApifyClient } = require('apify-client');
const client = new ApifyClient({ token: 'VOTRE_TOKEN' });
async function scrapeBothMarkets(searchFR, searchDE) {
const [runFR, runDE] = await Promise.all([
client.actor('kazkn/vinted-smart-scraper').call({
search_url: `https://www.vinted.fr/catalog?search_text=${searchFR}`,
max_items: 200
}),
client.actor('kazkn/vinted-smart-scraper').call({
search_url: `https://www.vinted.de/catalog?search_text=${searchDE}`,
max_items: 200
})
]);
const [dataFR, dataDE] = await Promise.all([
client.dataset(runFR.defaultDatasetId).listItems(),
client.dataset(runDE.defaultDatasetId).listItems()
]);
return {
france: dataFR.items,
germany: dataDE.items
};
}
// Recherche bilingue
scrapeBothMarkets('veste+nike', 'nike+jacke');
Pour comparer efficacement, normalisez les données dans un format unifié :
function normalizeItem(item, country) {
return {
id: item.id,
title: item.title,
price: item.price, // Déjà en EUR pour les deux
currency: 'EUR',
country: country,
size_normalized: normalizeSize(item.size, country, item.category),
brand: item.brand?.toLowerCase(),
condition: mapCondition(item.status, country),
photos_count: item.photos?.length || 0,
seller_rating: item.user?.feedback_reputation,
created_at: new Date(item.created_at),
url: item.url
};
}
function mapCondition(status, country) {
// Les statuts sont les mêmes en interne mais affichés différemment
const conditions = {
1: 'new_with_tags',
2: 'new_without_tags',
3: 'very_good',
4: 'good',
5: 'satisfactory'
};
return conditions[status] || 'unknown';
}
D'après notre analyse sur le Vinted Smart Scraper, voici les écarts de prix typiques :
function analyzePriceDifferences(dataFR, dataDE) {
// Regrouper par marque
const brands = {};
[...dataFR, ...dataDE].forEach(item => {
const brand = item.brand_normalized;
if (!brands[brand]) brands[brand] = { FR: [], DE: [] };
brands[brand][item.country].push(item.price);
});
// Calculer les écarts
return Object.entries(brands).map(([brand, data]) => {
const avgFR = data.FR.reduce((a, b) => a + b, 0) / (data.FR.length || 1);
const avgDE = data.DE.reduce((a, b) => a + b, 0) / (data.DE.length || 1);
return {
brand,
avgPriceFR: avgFR.toFixed(2),
avgPriceDE: avgDE.toFixed(2),
difference: ((avgFR - avgDE) / avgFR * 100).toFixed(1) + '%',
samplesFR: data.FR.length,
samplesDE: data.DE.length
};
}).sort((a, b) => parseFloat(b.difference) - parseFloat(a.difference));
}
Selon nos données, les marques avec les plus grands écarts France/Allemagne sont : Sézane (-28%), Petit Bateau (-24%), Comptoir des Cotonniers (-22%) côté français moins cher, et Adidas (-15%), Jack & Jones (-18%) côté allemand moins cher.
Le serveur MCP Vinted simplifie énormément les comparaisons. Demandez à Claude :
"Compare les prix des sneakers Adidas Samba entre Vinted France et Allemagne. Montre-moi les 10 meilleures affaires sur chaque marché."
Le MCP est disponible sur npm, GitHub et Apify.
La structure de base est identique, mais certains champs optionnels varient. L'Allemagne inclut parfois des champs supplémentaires liés à la réglementation locale.
Pour le scraper Vinted, traduisez vos termes de recherche ou utilisez les noms de marque (qui sont identiques). Le Vinted Smart Scraper accepte les recherches dans les deux langues.
Oui, la majorité des vendeurs Vinted acceptent l'expédition internationale. Selon nos données, 82% des vendeurs allemands envoient en France.
D'après notre analyse, un scrape toutes les 2 heures par pays offre un bon équilibre. Cela représente environ 24 scrapes par jour pour couvrir France et Allemagne.
Oui, chaque article a un ID unique global sur Vinted, quel que soit le pays d'origine.
Le scraping de Vinted France et Allemagne nécessite une bonne compréhension des différences entre les deux marchés. Avec le Vinted Smart Scraper et le MCP Vinted, ces complexités sont gérées automatiquement.