curl --request POST \
--url https://scrapebadger.com/v1/vinted/search_by_image \
--header 'Content-Type: application/json' \
--header 'x-api-key: <api-key>' \
--data '
{
"image_url": "https://example.com/photo.jpg",
"market": "nl",
"per_page": 20,
"price_to": 50
}
'import requests
url = "https://scrapebadger.com/v1/vinted/search_by_image"
payload = {
"image_url": "https://example.com/photo.jpg",
"market": "nl",
"per_page": 20,
"price_to": 50
}
headers = {
"x-api-key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'x-api-key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
image_url: 'https://example.com/photo.jpg',
market: 'nl',
per_page: 20,
price_to: 50
})
};
fetch('https://scrapebadger.com/v1/vinted/search_by_image', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://scrapebadger.com/v1/vinted/search_by_image",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'image_url' => 'https://example.com/photo.jpg',
'market' => 'nl',
'per_page' => 20,
'price_to' => 50
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"x-api-key: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://scrapebadger.com/v1/vinted/search_by_image"
payload := strings.NewReader("{\n \"image_url\": \"https://example.com/photo.jpg\",\n \"market\": \"nl\",\n \"per_page\": 20,\n \"price_to\": 50\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("x-api-key", "<api-key>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://scrapebadger.com/v1/vinted/search_by_image")
.header("x-api-key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"image_url\": \"https://example.com/photo.jpg\",\n \"market\": \"nl\",\n \"per_page\": 20,\n \"price_to\": 50\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://scrapebadger.com/v1/vinted/search_by_image")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["x-api-key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"image_url\": \"https://example.com/photo.jpg\",\n \"market\": \"nl\",\n \"per_page\": 20,\n \"price_to\": 50\n}"
response = http.request(request)
puts response.read_body{
"items": [
{
"id": 123,
"title": "<string>",
"price": {
"amount": "<string>",
"currency_code": "<string>"
},
"service_fee": "<string>",
"total_item_price": "<string>",
"brand_title": "<string>",
"size_title": "<string>",
"status": "<string>",
"photo": {
"id": 123,
"url": "<string>",
"full_size_url": "<string>",
"width": 123,
"height": 123,
"dominant_color": "<string>",
"is_main": true
},
"photos": [
{
"id": 123,
"url": "<string>",
"full_size_url": "<string>",
"width": 123,
"height": 123,
"dominant_color": "<string>",
"is_main": true
}
],
"url": "<string>",
"path": "<string>",
"user": {
"id": 123,
"login": "<string>",
"photo_url": "<string>",
"business": true
},
"favourite_count": 123,
"view_count": 123,
"is_visible": true,
"promoted": true,
"content_source": "<string>",
"seller_country_code": "<string>",
"display_title": "<string>",
"display_subtitle": "<string>"
}
],
"pagination": {
"current_page": 123,
"per_page": 123,
"total_pages": 123,
"total_entries": 123,
"time": 123
},
"market": "<string>",
"seller_country": "<string>"
}{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>"
}
]
}Search by Image
Supply exactly one of image_url or image_base64 (JPEG/PNG/WebP, at most 5 MiB decoded). Find active Vinted listings from a photo. 10 credits per successful request. Returns the usual items, pagination and market envelope. Visual ranking; no similarity score. Resend the same image and pagination time for subsequent pages. Structured brand data may be null.
curl --request POST \
--url https://scrapebadger.com/v1/vinted/search_by_image \
--header 'Content-Type: application/json' \
--header 'x-api-key: <api-key>' \
--data '
{
"image_url": "https://example.com/photo.jpg",
"market": "nl",
"per_page": 20,
"price_to": 50
}
'import requests
url = "https://scrapebadger.com/v1/vinted/search_by_image"
payload = {
"image_url": "https://example.com/photo.jpg",
"market": "nl",
"per_page": 20,
"price_to": 50
}
headers = {
"x-api-key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'x-api-key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
image_url: 'https://example.com/photo.jpg',
market: 'nl',
per_page: 20,
price_to: 50
})
};
fetch('https://scrapebadger.com/v1/vinted/search_by_image', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://scrapebadger.com/v1/vinted/search_by_image",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'image_url' => 'https://example.com/photo.jpg',
'market' => 'nl',
'per_page' => 20,
'price_to' => 50
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"x-api-key: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://scrapebadger.com/v1/vinted/search_by_image"
payload := strings.NewReader("{\n \"image_url\": \"https://example.com/photo.jpg\",\n \"market\": \"nl\",\n \"per_page\": 20,\n \"price_to\": 50\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("x-api-key", "<api-key>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://scrapebadger.com/v1/vinted/search_by_image")
.header("x-api-key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"image_url\": \"https://example.com/photo.jpg\",\n \"market\": \"nl\",\n \"per_page\": 20,\n \"price_to\": 50\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://scrapebadger.com/v1/vinted/search_by_image")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["x-api-key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"image_url\": \"https://example.com/photo.jpg\",\n \"market\": \"nl\",\n \"per_page\": 20,\n \"price_to\": 50\n}"
response = http.request(request)
puts response.read_body{
"items": [
{
"id": 123,
"title": "<string>",
"price": {
"amount": "<string>",
"currency_code": "<string>"
},
"service_fee": "<string>",
"total_item_price": "<string>",
"brand_title": "<string>",
"size_title": "<string>",
"status": "<string>",
"photo": {
"id": 123,
"url": "<string>",
"full_size_url": "<string>",
"width": 123,
"height": 123,
"dominant_color": "<string>",
"is_main": true
},
"photos": [
{
"id": 123,
"url": "<string>",
"full_size_url": "<string>",
"width": 123,
"height": 123,
"dominant_color": "<string>",
"is_main": true
}
],
"url": "<string>",
"path": "<string>",
"user": {
"id": 123,
"login": "<string>",
"photo_url": "<string>",
"business": true
},
"favourite_count": 123,
"view_count": 123,
"is_visible": true,
"promoted": true,
"content_source": "<string>",
"seller_country_code": "<string>",
"display_title": "<string>",
"display_subtitle": "<string>"
}
],
"pagination": {
"current_page": 123,
"per_page": 123,
"total_pages": 123,
"total_entries": 123,
"time": 123
},
"market": "<string>",
"seller_country": "<string>"
}{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>"
}
]
}image_url or image_base64. JPEG, PNG and WebP images can be up to 5 MiB decoded. Authenticate with your x-api-key header.Authorizations
Body
Search by exactly one public image URL or base64-encoded image.
Public HTTP(S) image URL. Supply exactly one of image_url or image_base64.
4096JPEG, PNG or WebP, at most 5 MiB decoded. Bare base64 or a data:image/...;base64 URL.
7100000Vinted market code; uk aliases gb
x >= 11 <= x <= 96x >= 0x >= 0Comma-separated brand IDs
1000^[1-9][0-9]*(,[1-9][0-9]*)*$Comma-separated category IDs
1000^[1-9][0-9]*(,[1-9][0-9]*)*$Comma-separated color IDs
1000^[1-9][0-9]*(,[1-9][0-9]*)*$Comma-separated size IDs
1000^[1-9][0-9]*(,[1-9][0-9]*)*$Comma-separated material IDs
1000^[1-9][0-9]*(,[1-9][0-9]*)*$Comma-separated condition IDs
1000^[1-9][0-9]*(,[1-9][0-9]*)*$Pagination time from the preceding page
x >= 0Reuse across pages of one search
100Response
Successful search
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Echo of the market that was searched.
Echo of the normalized seller_country filter that was applied (uppercase, comma-separated ISO-2 codes, e.g. "FR,BE"), or null when no filter was requested.

