# Vinted Image Search Scraper (`piotrv1001/vinted-image-search-scraper`) Actor

The Vinted Image Search Scraper finds Vinted listings that match a photo on any of 26 Vinted markets — reverse image search returning prices with buyer fees, brand, size, condition, photos and seller, with price filters and sorting — ideal for resale pricing and sourcing second-hand fashion.

- **URL**: https://apify.com/piotrv1001/vinted-image-search-scraper.md
- **Developed by:** [FalconScrape](https://apify.com/piotrv1001) (community)
- **Categories:** E-commerce, AI, Automation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 1 bookmarks
- **User rating**: No ratings yet

## Pricing

from $20.00 / 1,000 image searches

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

### 🚀 Vinted Image Search Scraper

Find Vinted listings from a photo. The **Vinted Image Search Scraper** takes image URLs and returns the second-hand listings that look like them, the same "search by image" the Vinted app offers. Each row has the price in the market's currency, brand, size, condition, photos, seller and a direct link. It works on any Vinted market, from the UK, France and Germany to Poland and the US. Built for resellers pricing stock, buyers hunting a specific item, and anyone matching products to Vinted listings by picture instead of by keyword.

### ✨ Features

- 📷 **Photo in, listings out**: Any direct image URL (JPG, PNG, WebP, GIF or AVIF, up to 10 MB) or data: URL. Large photos are resized for you. One search per image.
- 🌍 **26 Vinted markets**: UK, France, Germany, Italy, Spain, Netherlands, Belgium, Austria, Poland, Czech Republic, Slovakia, Portugal, Lithuania, Latvia, Estonia, Hungary, Romania, Croatia, Slovenia, Greece, Sweden, Denmark, Finland, Ireland, Luxembourg and the US. Prices come in that market's currency.
- 💶 **Price filters and sorting**: Limit matches to a price range. Sort by similarity (default), newest first, or price low to high or high to low.
- 🏷️ **Rich rows**: Title, price, buyer-protection fee and total price, brand, size, condition, favourites, promoted flag, all photos, seller ID, username and profile link.
- 🔢 **Deep results**: Up to 96 matches per page and up to ~860 unique matches per photo. Repeats between pages are removed.
- 💸 **Pay per search**: One price per image searched and a small price per extra page. Images that fail to load or find no matches are free.

### 🛠️ How It Works

1. **Paste image URLs**: Photos of items you own, a product shot from another shop, or any picture of the item you want.
2. **Pick the market, depth and filters**: Choose a Vinted country site, how many matches per image, an optional price range and the sort order.
3. **Run the scraper**: You get one row per matching listing, numbered by position and grouped by the photo that found it.

### 💰 Pricing

| Event        |    Price | What you get                                                    |
| ------------ | -------: | --------------------------------------------------------------- |
| Actor start  | $0.00005 | Once per run                                                    |
| Image search |    $0.02 | One image searched, up to 96 matches                            |
| Results page |    $0.01 | Each additional page of up to 96 new matches for the same image |

100 images at the default 96 matches cost $2.00. One image at 400 matches costs $0.06 (the first page plus four more, because repeats between pages are removed). The deepest search, about 860 matches, costs about $0.11. Images that cannot be loaded or find no matches are not charged. The run stops at your maximum charge per run.

### 📥 Input

| Field                | Type    | Description                                                                                    |
| -------------------- | ------- | ---------------------------------------------------------------------------------------------- |
| `imageUrls`          | array   | Image URLs (or data: URLs) to search with.                                                     |
| `market`             | string  | Vinted country site, e.g. `vinted.co.uk` (default), `vinted.fr`, `vinted.de`, `vinted.com`.    |
| `maxResultsPerImage` | integer | Matches per image. Default `96`, maximum `960`.                                                |
| `sortBy`             | string  | `relevance` (most similar, default), `newest_first`, `price_low_to_high`, `price_high_to_low`. |
| `priceMin`           | number  | Minimum price in the market's currency (optional).                                             |
| `priceMax`           | number  | Maximum price in the market's currency (optional).                                             |
| `proxyConfiguration` | object  | Keep the default.                                                                              |

Example:

```json
{
    "imageUrls": [
        "https://upload.wikimedia.org/wikipedia/commons/thumb/f/f0/Barbour_jacket_01.jpg/960px-Barbour_jacket_01.jpg"
    ],
    "market": "vinted.fr",
    "maxResultsPerImage": 200,
    "sortBy": "price_low_to_high",
    "priceMin": 20
}
```

### 📊 Sample Output Data

One row per matching listing. Example (one match for a photo of a Barbour jacket):

```json
[
    {
        "searchImage": "https://upload.wikimedia.org/wikipedia/commons/thumb/f/f0/Barbour_jacket_01.jpg/960px-Barbour_jacket_01.jpg",
        "position": 1,
        "id": 10032206764,
        "title": "Barbour coat S Child’s Liddesdale",
        "url": "https://www.vinted.co.uk/items/10032206764-barbour-coat-s-childs-liddesdale",
        "price": 30,
        "currency": "GBP",
        "serviceFee": 2.2,
        "totalPrice": 32.2,
        "brandName": "Barbour",
        "size": "S",
        "condition": "Very good",
        "isPromoted": false,
        "favouriteCount": 0,
        "photoUrl": "https://images1.vinted.net/t/06_017da_ad3GqBQz2mXSFyBsRr3Qj2WP/f800/b4bd407b.webp?s=f685d64d0488af51140b6689c631336c71fe0493",
        "photos": [
            {
                "url": "https://images1.vinted.net/t/06_017da_ad3GqBQz2mXSFyBsRr3Qj2WP/f800/b4bd407b.webp?s=f685d64d0488af51140b6689c631336c71fe0493",
                "fullSizeUrl": "https://images1.vinted.net/tc/06_017da_ad3GqBQz2mXSFyBsRr3Qj2WP/b4bd407b.webp?s=e6eabba208cbd1a477787d6d6622d0e0e193a2d7",
                "isMain": true,
                "width": 800,
                "height": 759
            }
        ],
        "seller": {
            "id": 77375929,
            "username": "melly_g",
            "profileUrl": "https://www.vinted.co.uk/member/77375929",
            "isBusiness": false
        },
        "domain": "vinted.co.uk",
        "scrapedAt": "2026-10-09T10:21:08.087Z"
    }
]
```

- `totalPrice` is the price plus Vinted's buyer-protection fee (`serviceFee`).
- `brandName` and `size` are `null` when the seller did not set them. `condition` uses the market's language.
- `isPromoted` marks listings that Vinted boosts into the results; they are still visual matches.
- Field names match the [Vinted Listings Scraper](https://apify.com/piotrv1001/vinted-listings-scraper), so you can merge the two datasets.
- Images that fail come back as `{ "searchImage": "...", "status": "image_error" | "failed" | "no_matches", "error": "..." }` rows and are not charged.

### 🔗 Use cases

- **Price an item from its photo**: See what similar items are listed for before you sell.
- **Find a specific piece**: Look for a jacket, bag or pair of shoes you only have a picture of.
- **Cross-market sourcing**: Search the same photo on several Vinted markets and compare prices and currencies.
- **Catalogue matching**: Map your stock or a shop's products to Vinted listings by image instead of by title.

### 🔗 Related Actors

- [Vinted Listings Scraper](https://apify.com/piotrv1001/vinted-listings-scraper): Vinted listings from a keyword search, with filters and seller profiles.
- [Mercari Image Search Scraper](https://apify.com/piotrv1001/mercari-image-search-scraper): the same photo search on Mercari Japan, including sold listings.
- [AliExpress Image Search Scraper](https://apify.com/piotrv1001/aliexpress-image-search-scraper): find AliExpress products that look like your photo.
- [Amazon Image Search Scraper](https://apify.com/piotrv1001/amazon-image-search-scraper): find Amazon products that look like your photo.
- [Pinterest Visual Search Scraper](https://apify.com/piotrv1001/pinterest-visual-search-scraper) — find Pinterest pins that look like your photo.
- [Yandex Reverse Image Search Scraper](https://apify.com/piotrv1001/yandex-reverse-image-search-scraper) — find where an image appears online, other sizes and similar images.

Turn pictures into Vinted prices. Run the **Vinted Image Search Scraper** today! 🚀

*Vinted is a trademark of Vinted UAB. This Actor is not affiliated with or endorsed by Vinted.*

# Actor input Schema

## `imageUrls` (type: `array`):

Photos to search Vinted with: direct image URLs (JPG, PNG, WebP, GIF or AVIF, up to 10 MB) or data: URLs. One search per image. Leave empty to try two example photos.

## `market` (type: `string`):

Which Vinted country site to search. Prices come in that market's currency and links point to that site.

## `maxResultsPerImage` (type: `integer`):

Matching listings to return per image. A results page holds up to 96; Vinted returns up to ~860 unique matches per photo.

## `sortBy` (type: `string`):

Most similar first (default), newest first, or by price. Sorting by price or date reorders the visually matching listings.

## `priceMin` (type: `number`):

Only listings priced at or above this, in the market's currency.

## `priceMax` (type: `number`):

Only listings priced at or below this, in the market's currency.

## `proxyConfiguration` (type: `object`):

Keep the default.

## Actor input object example

```json
{
  "imageUrls": [
    "https://upload.wikimedia.org/wikipedia/commons/thumb/f/f0/Barbour_jacket_01.jpg/960px-Barbour_jacket_01.jpg",
    "https://upload.wikimedia.org/wikipedia/commons/thumb/9/91/Dr_Martens_10_Eyelet_Boots.JPG/960px-Dr_Martens_10_Eyelet_Boots.JPG"
  ],
  "market": "vinted.co.uk",
  "maxResultsPerImage": 96,
  "sortBy": "relevance",
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}
```

# Actor output Schema

## `matches` (type: `string`):

No description

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "imageUrls": [
        "https://upload.wikimedia.org/wikipedia/commons/thumb/f/f0/Barbour_jacket_01.jpg/960px-Barbour_jacket_01.jpg",
        "https://upload.wikimedia.org/wikipedia/commons/thumb/9/91/Dr_Martens_10_Eyelet_Boots.JPG/960px-Dr_Martens_10_Eyelet_Boots.JPG"
    ],
    "proxyConfiguration": {
        "useApifyProxy": true
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("piotrv1001/vinted-image-search-scraper").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "imageUrls": [
        "https://upload.wikimedia.org/wikipedia/commons/thumb/f/f0/Barbour_jacket_01.jpg/960px-Barbour_jacket_01.jpg",
        "https://upload.wikimedia.org/wikipedia/commons/thumb/9/91/Dr_Martens_10_Eyelet_Boots.JPG/960px-Dr_Martens_10_Eyelet_Boots.JPG",
    ],
    "proxyConfiguration": { "useApifyProxy": True },
}

# Run the Actor and wait for it to finish
run = client.actor("piotrv1001/vinted-image-search-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "imageUrls": [
    "https://upload.wikimedia.org/wikipedia/commons/thumb/f/f0/Barbour_jacket_01.jpg/960px-Barbour_jacket_01.jpg",
    "https://upload.wikimedia.org/wikipedia/commons/thumb/9/91/Dr_Martens_10_Eyelet_Boots.JPG/960px-Dr_Martens_10_Eyelet_Boots.JPG"
  ],
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}' |
apify call piotrv1001/vinted-image-search-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,piotrv1001/vinted-image-search-scraper"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/cGPE6qC57F5JnIW0B/builds/ALZm2jb593PpSFnyn/openapi.json
