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.
Vue d'Ensemble des Différences
| 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% |
Étape 1 : Comprendre les Structures d'URL
Les URLs de recherche diffèrent entre les deux pays :
France
https://www.vinted.fr/catalog?search_text=veste+nike&catalog_id=4&size_ids[]=208
Allemagne
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.
Étape 2 : Mapper les Catégories
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' }
};
Étape 3 : Gérer les Systèmes de Tailles
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
Étape 4 : Scraper les Deux Marchés Simultanément
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');
Étape 5 : Normaliser les Données
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';
}
Étape 6 : Analyser les Différences de Prix
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.
Étape 7 : Utiliser le MCP pour les Comparaisons
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.
FAQ
Les données Vinted France et Allemagne ont-elles le même format JSON ?
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.
Comment gérer les termes de recherche bilingues ?
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.
Les vendeurs allemands expédient-ils en France ?
Oui, la majorité des vendeurs Vinted acceptent l'expédition internationale. Selon nos données, 82% des vendeurs allemands envoient en France.
Quelle est la fréquence optimale de scraping pour les deux pays ?
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.
Les IDs d'articles sont-ils uniques entre pays ?
Oui, chaque article a un ID unique global sur Vinted, quel que soit le pays d'origine.
Conclusion
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.
Top comments (0)