# Vinted Email Scraper (`leads-scraper/vinted-email-scraper`) Actor

Vinted Email Scraper SD - Vinted Email Scraper is a lead generation tool that extracts leads with public contact emails, account names and profile URLs from Vinted results by keyword, location and email domain - Vinted email extractor.

- **URL**: https://apify.com/leads-scraper/vinted-email-scraper.md
- **Developed by:** [Leads Scraper](https://apify.com/leads-scraper) (community)
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $2.49 / 1,000 results

This Actor is paid per event and usage. You are charged both the fixed price for specific events and for Apify platform usage.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

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 Email Scraper for Secondhand and Vintage Seller Leads

The **Vinted Email Scraper** collects publicly indexed contact emails tied to Vinted listings, catalogue pages and member pages across five country domains.
Everything comes from Google SERP scraping: `vinted.com`, `vinted.co.uk`, `vinted.fr`, `vinted.de` and `vinted.pl` are queried with the `site:` operator.
No login, no cookies, no browser, no JavaScript rendering and no Vinted API are involved at any point.

Set one expectation before you press Start. Vinted member pages are rarely indexed by Google, so a row usually identifies an **item or a catalogue page rather than a member profile**.
In live testing this Vinted Email Scraper scored 10 out of 10 on identity resolution but only about 1 row in 10 carried a usable `profileUrl`.
That split is unusual, so it is spelled out again in the output, limitations and FAQ sections below.

Multi-market coverage is the real differentiator here. Most marketplace scrapers watch one domain; the Vinted Email Scraper watches five at once.
That makes it a practical tool for building secondhand marketplace leads across the UK, France, Germany, Poland and the international `.com` catalogue.
Pair it with `countryCode` and local-language keywords and you get country targeting that most generic Vinted email extractor tools cannot reach.

### What the Vinted Email Scraper Actually Does

The Vinted Email Scraper is a lead-generation Actor, not a marketplace crawler.
The Vinted Email Scraper reads your keywords, builds a batch of Google queries, fetches result pages through the Apify GOOGLE\_SERP proxy, and pulls emails out of the visible titles and snippets.
Only text that Google already publishes is ever read.

That design has an honest consequence: the Vinted Email Scraper can only surface a Vinted seller email that is already public in Google's index.
It cannot see a private inbox, a hidden member page, or anything behind Vinted's login wall.
If a seller has never printed an address on an indexed page, no run will find them.

### Vinted Email Scraper Features

| Feature | Detail |
|---|---|
| Five-domain coverage | Multi-domain query building across `vinted.com`, `vinted.co.uk`, `vinted.fr`, `vinted.de`, `vinted.pl` |
| Query expansion | Base, quoted, `intitle:` and one variant per query modifier; base queries run first |
| Structural block parsing | Locates the `<h3>` title then the smallest surrounding block — no dependence on Google CSS class names |
| Domain-filtered regex | Only emails on your `customDomains` are kept; boundary-correct, so `@gmail.com` never matches `@gmail.company` |
| Email normalisation | Handles `name [at] domain [dot] com`, `(at)`, `name @ domain.com`, `domain .com`, zero-width characters and the full-width `＠` |
| Junk filter | Rejects placeholders such as `email@`, `yourname@`, `test@`, `xxx@` and single-character locals |
| Soft-wrap repair | Drops a hit that is only the tail of another email in the same block |
| Global deduplication | One row per unique email across every query and every page of the run |
| Concurrency | `asyncio` worker pool with a shared stop signal once `maxEmails` is reached |
| Retries | Up to 3 attempts per page with exponential backoff and a fresh proxy session per request |
| CAPTCHA detection | CAPTCHA, "unusual traffic" and consent pages are detected and retried, not counted as empty |
| Re-queueing | Blocked or failed queries are retried once at the end of the run |
| Resumable state | Key-value store state keyed by an input hash; throttled saves plus `PERSIST_STATE`, `MIGRATING` and `ABORTING` hooks |
| Fallback parser | Whole-page parsing if Google's markup changes, degrading to "emails without account details" instead of nothing |
| Run summary | Logs pages fetched, blocked pages, retries and emails per page |
| Dataset export | Streams rows to the Apify dataset immediately; export as CSV/JSON for your CRM |

Every one of those features ships enabled, so a default Vinted Email Scraper run already uses query expansion, global deduplication and CAPTCHA detection.
You only need to touch the input when you want to narrow a market or widen recall.

### How the Vinted Email Scraper Works

1. Read the input: keywords, location, email domains and limits.
2. Build Google queries with the `site:` operator against all five Vinted domains, for example `site:vinted.fr vendeur "@gmail.com"`.
3. Fetch result pages asynchronously through the Apify GOOGLE\_SERP proxy with rotating proxy sessions.
4. Parse each result block structurally to find the title, account label and snippet.
5. Extract addresses with a domain-filtered regex, then normalise and junk-filter them.
6. Deduplicate globally and push each lead straight to the dataset.

Because snippet parsing happens on Google's own text, the Vinted Email Scraper stays lightweight and predictable as a Vinted email extractor.
There is no headless browser to warm up and no session to maintain.
The trade-off is that coverage is bounded by what Google has crawled.

### Vinted Email Scraper Input Fields

| Field | Type | Default | Meaning |
|---|---|---|---|
| `keywords` | array (required) | `["seller","vintage"]` | Search terms — niche, job title, industry |
| `location` | string | `""` | Optional location phrase added to every query |
| `customDomains` | array | `["@gmail.com","@yahoo.com"]` | Only emails on these domains are kept; `@` optional |
| `maxEmails` | integer 1-10000 | `20` | Stop after this many unique emails |
| `countryCode` | string | `""` | Two-letter country for the search proxy (US, GB, DE...) |
| `expandQueries` | boolean | `true` | Search each keyword x domain pair in several phrasings |
| `queryModifiers` | array | `["email","contact us","wholesale","customer service","stockist"]` | Extra words combined with each keyword when expansion is on |
| `maxPagesPerQuery` | integer 1-50 | `30` | Page cap per query |
| `maxConcurrency` | integer 1-20 | `5` | Parallel queries |

Only `keywords` is required; every other Vinted Email Scraper input has a working default.
A baseline Vinted Email Scraper run for vintage reseller leads looks like this:

```json
{
  "keywords": ["vintage", "seller", "thrift store"],
  "location": "",
  "customDomains": ["@gmail.com", "@yahoo.com"],
  "maxEmails": 200,
  "countryCode": "GB",
  "expandQueries": true,
  "queryModifiers": ["email", "contact us", "wholesale", "customer service", "stockist"],
  "maxPagesPerQuery": 30,
  "maxConcurrency": 5
}
```

### Localisation: Running the Vinted Email Scraper on FR, DE and PL Markets

Vinted is a European platform first, so localisation is a first-class lever rather than an afterthought.
Pair local-language keywords with a matching `countryCode` and the Vinted Email Scraper will bias Google toward that market's index.
French `vendeur` / `friperie` / `vintage`, German `Verkäufer` / `Secondhand`, Polish `sprzedawca` / `używane` all work as ordinary keywords.

```json
{
  "keywords": ["vendeur", "friperie", "vintage", "Verkäufer", "Secondhand", "sprzedawca", "używane"],
  "location": "",
  "customDomains": ["@gmail.com", "@yahoo.com", "@orange.fr", "@web.de", "@wp.pl"],
  "maxEmails": 500,
  "countryCode": "FR",
  "expandQueries": true,
  "queryModifiers": ["email", "contact us", "wholesale", "customer service", "stockist"],
  "maxPagesPerQuery": 30,
  "maxConcurrency": 5
}
```

Run one Vinted Email Scraper job per market for cleaner attribution — `FR`, then `DE`, then `PL`.
Add local free-mail domains such as `@orange.fr`, `@web.de` and `@wp.pl` to `customDomains`, since European resale sellers often use them instead of Gmail.
Country targeting changes which pages Google surfaces, so the same keyword can return very different sets of circular fashion suppliers.

### Vinted Email Scraper Output Fields

Every dataset item written by the Vinted Email Scraper carries all fourteen fields below.

| Field | Meaning |
|---|---|
| `network` | Platform name |
| `keyword` | The keyword that produced the lead |
| `query` | The exact Google query used |
| `title` | Raw result title |
| `accountName` | Account label Google prints |
| `fullName` | Display name parsed from a profile-style title; empty for item captions |
| `username` | URL-safe handle when Vinted exposes one; otherwise `null` |
| `profileUrl` | Canonical member URL when a handle is known; otherwise empty |
| `url` | Direct Vinted link when exposed, else the profile URL |
| `description` | Snippet text, cleaned of labels and counters |
| `email` | Lower-cased email address |
| `emailDomain` | The matched domain, e.g. `@gmail.com` |
| `possiblyTruncated` | `true` when Google's snippet ellipsis touched the email — verify before sending |
| `foundAt` | ISO 8601 UTC timestamp |

The sample below reflects the real shape of a Vinted Email Scraper run. Two of three rows have no member handle, which is the dominant case.

```json
[
  {
    "network": "Vinted",
    "keyword": "vintage",
    "query": "site:vinted.co.uk vintage \"@gmail.com\"",
    "title": "Vintage Levi's 501 denim jacket | Vinted",
    "accountName": "Vinted",
    "fullName": "",
    "username": null,
    "profileUrl": "",
    "url": "https://www.vinted.co.uk/items/482913776-vintage-levis-501-denim-jacket",
    "description": "Bundle deals available - wholesale enquiries retrolane.stock@gmail.com - ships from Manchester",
    "email": "retrolane.stock@gmail.com",
    "emailDomain": "@gmail.com",
    "possiblyTruncated": false,
    "foundAt": "2026-08-31T09:14:22Z"
  },
  {
    "network": "Vinted",
    "keyword": "vendeur",
    "query": "site:vinted.fr vendeur \"contact us\" \"@gmail.com\"",
    "title": "Friperie vintage en gros - Vêtements femmes | Vinted",
    "accountName": "Vinted",
    "fullName": "",
    "username": null,
    "profileUrl": "",
    "url": "https://www.vinted.fr/catalog?search_text=friperie%20vintage%20gros",
    "description": "Lots de friperie triee, contact pro : atelier.friperie.lyon@gmail.com pour les commandes en...",
    "email": "atelier.friperie.lyon@gmail.com",
    "emailDomain": "@gmail.com",
    "possiblyTruncated": true,
    "foundAt": "2026-08-31T09:15:07Z"
  },
  {
    "network": "Vinted",
    "keyword": "seller",
    "query": "site:vinted.com seller \"wholesale\" \"@yahoo.com\"",
    "title": "Nadia Kowalska (nadia_vintage_pl) | Vinted",
    "accountName": "nadia_vintage_pl",
    "fullName": "Nadia Kowalska",
    "username": "nadia_vintage_pl",
    "profileUrl": "https://www.vinted.com/member/nadia_vintage_pl",
    "url": "https://www.vinted.com/member/nadia_vintage_pl",
    "description": "Vintage & secondhand bulk seller. Wholesale lots, DM or nadia.vintage.wholesale@yahoo.com",
    "email": "nadia.vintage.wholesale@yahoo.com",
    "emailDomain": "@yahoo.com",
    "possiblyTruncated": false,
    "foundAt": "2026-08-31T09:16:41Z"
  }
]
```

### Vinted Email Scraper Identity Resolution vs Profile URL Resolution

These are two different things, and the Vinted Email Scraper performs very differently on each.
**Identity resolution** scored 10/10 in testing: rows arrive with a `title`, an `accountName`, often a `fullName` and a `description` snippet.
The rows are well-labelled leads with context, not anonymous blobs of text.

**Profile URL resolution** scored roughly 1/10. Google rarely indexes `/member/{username}` pages, so `username` is usually `null` and `profileUrl` is usually `""`.
In those rows `url` points at the item or catalogue page that carried the address instead.
Practically: you get a well-labelled Vinted seller contact with context, but usually **not** a clickable Vinted member profile.

Plan your workflow around that. Treat `url` and `description` as the evidence trail for each Vinted seller email.
If your process requires a Vinted member profile for every lead, the Vinted Email Scraper will disappoint you; if it requires a contactable address with context, it will not.
Teams doing cold outreach usually find the context more useful than the link anyway.

### Use Cases for the Vinted Email Scraper

| Audience | How they use the Vinted Email Scraper |
|---|---|
| Resale-tool and cross-listing SaaS vendors | Build ICP research lists of active sellers across five markets before a launch |
| Consignment and thrift sourcing buyers | Find bulk-lot sellers advertising wholesale contact addresses |
| Vintage wholesalers and bulk-clothing suppliers | Source vintage reseller leads by keyword and country |
| Circular-fashion agencies | Assemble secondhand marketplace leads for client campaigns |
| Marketplace analysts | Sample how contact information surfaces across EU domains |
| B2B prospecting teams | Feed cold outreach sequences with context-rich rows exported as CSV/JSON |

For cross-platform coverage, run the Vinted Email Scraper alongside the [Depop Email
Scraper](https://apify.com/leads-scraper/depop-email-scraper) and the [Poshmark Email
Scraper](https://apify.com/leads-scraper/poshmark-email-scraper) for the wider resale
ecosystem.

The [Mercari Email Scraper](https://apify.com/neuro-scraper/mercari-email-scraper) and [Etsy
Email Scraper](https://apify.com/leads-scraper/etsy-email-scraper) cover adjacent secondhand
and vintage supply.

In Europe specifically, the \[Zalando Email Scraper]\(https://apify.com/leads-scraper/zalando-
email-scraper) and \[Allegro Email Scraper]\(https://apify.com/neuro-scraper/allegro-email-
scraper) pair naturally with the Vinted Email Scraper on Polish and German runs.

Together they turn a single-market list into a broader map of circular fashion suppliers and
European resale sellers.

### Getting Better Results from the Vinted Email Scraper

Keyword choice matters more than any other setting. Generic terms like `seller` return broad catalogue pages; commercial terms like `wholesale`, `friperie` or `bulk lots` surface sellers who actually publish a contact address.
Keep the default `queryModifiers` in place, since `email`, `contact us`, `wholesale`, `customer service` and `stockist` are the phrasings that most often sit next to an address in a snippet.

Domain choice is the second lever. The default `["@gmail.com","@yahoo.com"]` is a safe start, but European resale sellers frequently use national providers.
Adding those domains widens recall considerably without loosening the domain-filtered regex, because each domain is still matched at a boundary.

Concurrency and page caps control cost, not quality. Leave `maxConcurrency` at `5` and `maxPagesPerQuery` at `30` unless a run is being throttled.
If you need scale, prefer more queries over deeper paging — Google's ~300-result cap means page 25 rarely holds anything new.

Finally, split runs by market. One Vinted Email Scraper run per `countryCode` produces cleaner datasets for ICP research and makes attribution obvious when you export CSV/JSON.
Mixed-country runs still work, but you lose the ability to tell which market a lead came from without inspecting `query` on every row.

### Vinted Email Scraper Limitations

Read this list before you budget a campaign around the Vinted Email Scraper. None of these are defects; they are the boundaries of Google SERP scraping.

- **Vinted member pages are rarely indexed by Google, so rows usually identify an item or a catalogue page rather than a member profile.** In testing only about 1 row in 10 carried a profile URL.
- Only accounts and pages whose email is publicly visible in Google's index can be found.
- Google caps a single query at roughly 300 results — that is exactly why query expansion exists and why it is on by default.
- `possiblyTruncated: true` means Google's snippet ellipsis may have cut the address; verify before sending.
- The Actor requires the Apify GOOGLE\_SERP proxy and cannot run without Apify proxy credentials.
- Free Apify plans are capped at 100 emails per run; paid plans are uncapped.
- Empty `username` / `profileUrl` is a Google indexing limitation, not a bug in the Vinted Email Scraper.
- Results vary with keywords, domains and country; no volume is promised.

### Responsible Use

Vinted's user base is heavily European, so GDPR is central rather than incidental when you use the Vinted Email Scraper.
You become the data controller for anything you export. Establish a lawful basis before outreach — usually legitimate interest for genuine B2B contact — and document it.
Honour opt-outs immediately, keep a suppression list, and delete records you no longer need.

Respect Vinted's marketplace terms and do not use the output for spam, bulk unsolicited mail or resale of personal data.
Contact people with a relevant, specific message and an easy way to say no.
The Vinted Email Scraper is a research and prospecting tool; how it is used is your responsibility.

### Vinted Email Scraper FAQ

#### Why is `profileUrl` usually empty?

Because Vinted member pages are rarely indexed by Google, so most rows identify an item or a catalogue page rather than a member profile.
When that happens `username` is `null`, `profileUrl` is `""`, and `url` points to the item or catalogue page where the address appeared.

#### Does the Vinted Email Scraper need a Vinted login?

No. It never logs in, sets cookies, opens Vinted, or calls a Vinted API. It reads publicly indexed Google search results only.

#### Which country domains are covered?

Five: `vinted.com`, `vinted.co.uk`, `vinted.fr`, `vinted.de` and `vinted.pl`. All five are queried through multi-domain query building in every run.

#### How do I target the French, German or Polish markets?

Set `countryCode` to `FR`, `DE` or `PL` and use local-language keywords such as `vendeur`, `friperie`, `Verkäufer`, `Secondhand`, `sprzedawca` or `używane`.
Add local free-mail domains to `customDomains` for better recall among European resale sellers.

#### Is an Apify proxy required?

Yes. The Vinted Email Scraper fetches every page through the Apify GOOGLE\_SERP proxy and cannot run without Apify proxy credentials.

#### Is this legal?

It reads publicly indexed search results, which is generally permissible, but you are responsible for GDPR compliance, Vinted's terms and your local marketing law when you contact anyone.

#### How many emails can one Vinted Email Scraper run return?

As many as `maxEmails` allows, up to 10000, subject to what Google has indexed. Free Apify plans stop at 100 emails per run.

#### Is the Vinted Email Scraper affiliated with Vinted?

No. It is an independent Apify Actor with no connection to, endorsement from, or support by Vinted.

#### What does `possiblyTruncated` mean?

Google's snippet ellipsis touched the address, so it may be incomplete. Filter those rows out or verify them before adding them to a sequence.

#### Why does the same keyword return different results on each Vinted Email Scraper run?

Google's index and ranking shift constantly, and country targeting changes which pages appear. Volume is never fixed.

#### Can I get more Vinted seller contact rows out of the Vinted Email Scraper?

Widen `customDomains`, add more keywords and modifiers, raise `maxPagesPerQuery`, and run separate jobs per country code. Query expansion plus global deduplication keeps the extra queries from producing duplicates.

#### Does it resume after a migration?

Yes. Resumable state is stored in the key-value store keyed by an input hash, with saves on `PERSIST_STATE`, `MIGRATING` and `ABORTING`.

#### What happens if Google blocks a page?

CAPTCHA detection catches CAPTCHA, "unusual traffic" and consent pages; the request is retried with exponential backoff and a fresh proxy session, and blocked queries are re-queued once at the end of the run.

### Related Actors

| Actor | What it collects |
|---|---|
| [Vinted Email and Phone Number Scraper](https://apify.com/neuro-scraper/vinted-email-and-phone-number-scraper) | Emails and phone numbers from Vinted |
| [Vinted Phone Number Scraper](https://apify.com/neuro-scraper/vinted-phone-number-scraper) | Public phone numbers from Vinted |
| [AliExpress Email Scraper](https://apify.com/neuro-scraper/aliexpress-email-scraper) | Public contact emails from AliExpress |
| [Allegro Email Scraper](https://apify.com/neuro-scraper/allegro-email-scraper) | Public contact emails from Allegro |
| [Amazon Email Scraper](https://apify.com/leads-scraper/amazon-email-scraper) | Public contact emails from Amazon |
| [Best Buy Seller Email Scraper](https://apify.com/leads-scraper/best-buy-seller-email-scraper) | Public contact emails from Best Buy |
| [BigCommerce Store Email Scraper](https://apify.com/neuro-scraper/bigcommerce-store-email-scraper) | Public contact emails from BigCommerce Store |
| [Cdiscount Email Scraper](https://apify.com/neuro-scraper/cdiscount-email-scraper) | Public contact emails from Cdiscount |
| [Coupang Email Scraper](https://apify.com/neuro-scraper/coupang-email-scraper) | Public contact emails from Coupang |
| [Depop Email Scraper](https://apify.com/leads-scraper/depop-email-scraper) | Public contact emails from Depop |
| [DHgate Email Scraper](https://apify.com/neuro-scraper/dhgate-email-scraper) | Public contact emails from DHgate |
| [eBay Email Scraper](https://apify.com/leads-scraper/ebay-email-scraper) | Public contact emails from eBay |
| [Ecwid Store Email Scraper](https://apify.com/neuro-scraper/ecwid-store-email-scraper) | Public contact emails from Ecwid Store |
| [Etsy Email Scraper](https://apify.com/leads-scraper/etsy-email-scraper) | Public contact emails from Etsy |
| [Faire Email Scraper](https://apify.com/leads-scraper/faire-email-scraper) | Public contact emails from Faire |
| [Flipkart Email Scraper](https://apify.com/leads-scraper/flipkart-email-scraper) | Public contact emails from Flipkart |
| [Home Depot Seller Email Scraper](https://apify.com/leads-scraper/home-depot-seller-email-scraper) | Public contact emails from Home Depot |
| [JD.com Email Scraper](https://apify.com/leads-scraper/jd-com-email-scraper) | Public contact emails from JD.com |
| [Lazada Email Scraper](https://apify.com/neuro-scraper/lazada-email-scraper) | Public contact emails from Lazada |
| [Lowe's Seller Email Scraper](https://apify.com/leads-scraper/lowes-seller-email-scraper) | Public contact emails from Lowe's |
| [MercadoLibre Email Scraper](https://apify.com/neuro-scraper/mercadolibre-email-scraper) | Public contact emails from MercadoLibre |
| [Mercari Email Scraper](https://apify.com/neuro-scraper/mercari-email-scraper) | Public contact emails from Mercari |
| [Newegg Email Scraper](https://apify.com/leads-scraper/newegg-email-scraper) | Public contact emails from Newegg |
| [Otto Email Scraper](https://apify.com/leads-scraper/otto-email-scraper) | Public contact emails from Otto |
| [Overstock Email Scraper](https://apify.com/leads-scraper/overstock-email-scraper) | Public contact emails from Overstock |
| [Poshmark Email Scraper](https://apify.com/leads-scraper/poshmark-email-scraper) | Public contact emails from Poshmark |
| [Rakuten Email Scraper](https://apify.com/neuro-scraper/rakuten-email-scraper) | Public contact emails from Rakuten |
| [Shopee Email Scraper](https://apify.com/leads-scraper/shopee-email-scraper) | Public contact emails from Shopee |
| [Shopify Store Email Scraper](https://apify.com/leads-scraper/shopify-store-email-scraper) | Public contact emails from Shopify Store |
| [Taobao Email Scraper](https://apify.com/leads-scraper/taobao-email-scraper) | Public contact emails from Taobao |
| [Target Seller Email Scraper](https://apify.com/neuro-scraper/target-seller-email-scraper) | Public contact emails from Target |
| [Temu Email Scraper](https://apify.com/leads-scraper/temu-email-scraper) | Public contact emails from Temu |
| [Tmall Email Scraper](https://apify.com/leads-scraper/tmall-email-scraper) | Public contact emails from Tmall |
| [Walmart Email Scraper](https://apify.com/leads-scraper/walmart-email-scraper) | Public contact emails from Walmart |
| [Wayfair Email Scraper](https://apify.com/neuro-scraper/wayfair-email-scraper) | Public contact emails from Wayfair |
| [Wish Email Scraper](https://apify.com/leads-scraper/wish-email-scraper) | Public contact emails from Wish |
| [Wix Stores Email Scraper](https://apify.com/leads-scraper/wix-stores-email-scraper) | Public contact emails from Wix Stores |
| [WooCommerce Email Scraper](https://apify.com/neuro-scraper/woocommerce-email-scraper) | Public contact emails from WooCommerce |
| [Zalando Email Scraper](https://apify.com/leads-scraper/zalando-email-scraper) | Public contact emails from Zalando |
| [AliExpress Email and Phone Number Scraper](https://apify.com/neuro-scraper/aliexpress-email-and-phone-number-scraper) | Emails and phone numbers from AliExpress |
| [Allegro Email and Phone Number Scraper](https://apify.com/neuro-scraper/allegro-email-and-phone-number-scraper) | Emails and phone numbers from Allegro |
| [Amazon Email and Phone Number Scraper](https://apify.com/leads-scraper/amazon-email-and-phone-number-scraper) | Emails and phone numbers from Amazon |

### Leave a review

If the Vinted Email Scraper saved you time, please leave a star rating and a short review on
the Actor page.

Reviews are how other buyers judge whether a tool works, and they tell us which features to
build next.

If something did not work, email <neurodata.apify@gmail.com>
instead - bugs get fixed faster than they get complained about.

### Support

Questions, custom builds or a bug in the Vinted Email Scraper? Email **neurodata.apify@gmail.com**.

# Actor input Schema

## `keywords` (type: `array`):

Search terms describing the Vinted accounts you want (niche, job title, industry).

## `location` (type: `string`):

Optional location phrase added to every query (e.g. "New York").

## `customDomains` (type: `array`):

Only emails ending with one of these domains are collected. With or without the leading @. Each domain is searched separately, so more domains means more results but a longer run - remove some for a faster, narrower search, or add your own (e.g. @company.com).

## `maxEmails` (type: `integer`):

Stop once this many unique emails have been collected.

## `countryCode` (type: `string`):

Two-letter country code for the search proxy (e.g. US, GB, DE). Empty for any.

## `expandQueries` (type: `boolean`):

Search each keyword x domain pair with several phrasings. Recommended - Google caps a single query at ~300 results.

## `queryModifiers` (type: `array`):

Extra words combined with each keyword when Expand queries is on. Tuned for Vinted.

## `maxPagesPerQuery` (type: `integer`):

Google rarely returns more than ~30 pages for one query.

## `maxConcurrency` (type: `integer`):

How many queries run in parallel.

## Actor input object example

```json
{
  "keywords": [
    "seller",
    "vintage"
  ],
  "location": "",
  "customDomains": [
    "@gmail.com",
    "@yahoo.com"
  ],
  "maxEmails": 20,
  "countryCode": "",
  "expandQueries": true,
  "queryModifiers": [
    "email",
    "contact us",
    "wholesale",
    "customer service",
    "stockist"
  ],
  "maxPagesPerQuery": 30,
  "maxConcurrency": 5
}
```

# Actor output Schema

## `results` (type: `string`):

Records produced by Vinted Email Scraper, stored in the run's default dataset.

# 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 = {
    "keywords": [
        "seller",
        "vintage"
    ],
    "location": "",
    "customDomains": [
        "@gmail.com",
        "@yahoo.com"
    ],
    "countryCode": "",
    "queryModifiers": [
        "email",
        "contact us",
        "wholesale",
        "customer service",
        "stockist"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("leads-scraper/vinted-email-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 = {
    "keywords": [
        "seller",
        "vintage",
    ],
    "location": "",
    "customDomains": [
        "@gmail.com",
        "@yahoo.com",
    ],
    "countryCode": "",
    "queryModifiers": [
        "email",
        "contact us",
        "wholesale",
        "customer service",
        "stockist",
    ],
}

# Run the Actor and wait for it to finish
run = client.actor("leads-scraper/vinted-email-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 '{
  "keywords": [
    "seller",
    "vintage"
  ],
  "location": "",
  "customDomains": [
    "@gmail.com",
    "@yahoo.com"
  ],
  "countryCode": "",
  "queryModifiers": [
    "email",
    "contact us",
    "wholesale",
    "customer service",
    "stockist"
  ]
}' |
apify call leads-scraper/vinted-email-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,leads-scraper/vinted-email-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/NCEMNFF1kYVYKhPpf/builds/BjQYgRYzZKHzqN75v/openapi.json
