Otto Email Scraper avatar

Otto Email Scraper

Pricing

from $2.49 / 1,000 results

Go to Apify Store
Otto Email Scraper

Otto Email Scraper

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

Pricing

from $2.49 / 1,000 results

Rating

0.0

(0)

Developer

Leads Scraper

Leads Scraper

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

5 days ago

Last modified

Categories

Share

Otto Email Scraper

The Otto Email Scraper collects publicly indexed contact emails connected to otto.de, one of Germany's largest online retailers. It builds Google queries with the site:otto.de operator, fetches them through the Apify GOOGLE_SERP proxy, and extracts emails from the result blocks. No login, no browser, no OTTO API — only what Google has already published in its index.

Start with the honest part. OTTO is a first-party retailer with mostly German-language pages, so results are brand pages rather than seller profiles. Set countryCode to DE and use German keywords. Both of those are conditions for the Otto Email Scraper working at all, not optional refinements.

That distinction shapes everything else in this document. What the Otto Email Scraper realistically surfaces is supplier, brand and press contact details published on OTTO's own pages — not the inboxes of independent marketplace sellers. If you need third-party marketplace sellers with handles and profile URLs, the Cdiscount Email Scraper and the Allegro Email Scraper are structurally better suited to that job.

What one run of the Otto Email Scraper produces

Each dataset row is one unique email plus whatever account context Google printed around it. You get the raw title, an account label, a snippet, the exact query used and a truncation flag. The Otto Email Scraper pushes rows to the Apify dataset as they are found, so you can export CSV or JSON mid-run.

Why the Otto Email Scraper uses German keywords by default

otto.de is indexed almost entirely in German. Query language is the main lever you have here, and it is not a small one. An English query such as seller contact will match essentially nothing on otto.de.

The default keywords are haendler (retailer/dealer) and marke (brand). The default queryModifiers are email, kontakt, grosshandel (wholesale), kundenservice (customer service) and vertrieb (sales/distribution).

These defaults are deliberate. Note the ASCII transliterations — haendler rather than händler, grosshandel rather than großhandel. Google treats the umlaut and its ae/ss transliteration as broadly equivalent, and ASCII forms travel more reliably through query building. Add the umlaut spellings as extra keywords if you want to test both.

Setting countryCode for the Otto Email Scraper

Set countryCode to DE. This is called out explicitly in the Otto Email Scraper's own input description for a reason. The Apify GOOGLE_SERP proxy then searches from a German vantage point, and Google's country personalisation surfaces otto.de pages that a default or US-country search will not rank at all.

Running the Otto Email Scraper with an empty countryCode and English keywords is the fastest way to get an empty dataset. countryCode: "DE" plus German keywords is the configuration the Otto Email Scraper expects.

German free-mail domains for customDomains

The default customDomains are @gmail.com and @yahoo.com. Keep Gmail. Yahoo is comparatively rare in Germany and is usually worth replacing.

These German providers are worth testing. They are suggestions based on how the German market publishes contact details, not guarantees of volume:

DomainWhy add it for OTTO
@web.deOne of the two dominant German free-mail providers
@gmx.deThe other dominant German provider, very common with SMEs
@gmx.netThe .net variant of the same service
@t-online.deTelekom mail, long-established with older German businesses
@gmail.comKeep — still widely used overall

Every additional domain multiplies the query count, because the Otto Email Scraper searches each keyword against each domain. Given the low expected yield on this platform, prefer a small, well-chosen domain set over a wide sweep.

German keyword ideas beyond the defaults

Try lieferant (supplier), grosshaendler (wholesaler), hersteller (manufacturer), partner, unternehmen and presse (press). Add a vertical: moebel, elektronik, mode, haushalt, garten. Because OTTO publishes brand and supplier pages, lieferant and marke variants tend to be more productive than seller-flavoured terms.

Otto Email Scraper features

Everything listed below is implemented in the Otto Email Scraper today.

FeatureWhat it means in practice
German-first defaultskeywords and queryModifiers are tuned for otto.de, not translated from English
Query expansionBase, quoted, intitle: and one variant per modifier; base queries run first
Global deduplicationAn email found by several queries is stored exactly once
Email normalisationUnderstands name [at] domain [dot] de, name (at) domain, name @ domain, domain .com, zero-width characters and the full-width @
Junk filterRejects placeholders such as email@, yourname@, test@, xxx@ and single-character locals
Boundary-correct matching@gmail.com will not match inside @gmail.company or @gmail.com.br
Soft-wrap repairDrops a hit that is only the tail of another email in the same block
Structural parsingFinds the <h3> and the smallest surrounding block, so it does not depend on Google's CSS class names
Whole-page fallbackIf Google's markup changes, the run degrades to "emails without account details" rather than "no emails"
Block detectionCAPTCHA, "unusual traffic" and consent pages are detected and retried, not counted as empty
RetriesUp to 3 attempts per page with exponential backoff and a fresh proxy session per request
Failed-query requeueBlocked or failed queries are re-queued once at the end of the run
ConcurrencyAn asyncio worker pool with a shared stop signal on maxEmails
Resumable stateKey-value store state keyed by an input hash; saves on PERSIST_STATE, MIGRATING and ABORTING
Run summaryLogs pages fetched, blocked pages, retries and emails per page

How the Otto Email Scraper works

The Otto Email Scraper runs the same six steps on every query it builds.

  1. It reads your input: keywords, location, email domains and limits.
  2. It builds Google queries with the site: operator against otto.de, for example site:otto.de marke "@web.de" kontakt.
  3. It fetches result pages through the Apify GOOGLE_SERP proxy using async aiohttp requests.
  4. It parses each result block structurally rather than by CSS class name.
  5. It extracts emails with a domain-filtered regex and normalises obfuscated forms.
  6. It deduplicates globally and pushes each lead to the dataset immediately.

There is no browser, no JavaScript rendering, no authentication and no cookies. The Otto Email Scraper never signs into OTTO and never requests pages from OTTO's own servers. Everything it returns was already public in Google's search index.

Otto Email Scraper input fields

These are the exact input fields the Otto Email Scraper accepts, with the defaults it ships with.

FieldTypeDefaultMeaning
keywordsarray (required)["haendler","marke"]Search terms describing the accounts you want
locationstring""Optional location phrase added to every query
customDomainsarray["@gmail.com","@yahoo.com"]Only emails on these domains are kept; @ optional
maxEmailsinteger 1-1000020Stop after this many unique emails
countryCodestring""Two-letter country for the search proxy — set DE here
expandQueriesbooleantrueSearch each keyword x domain in several phrasings
queryModifiersarray["email","kontakt","grosshandel","kundenservice","vertrieb"]Extra words combined with each keyword when expansion is on
maxPagesPerQueryinteger 1-5030Page cap per query
maxConcurrencyinteger 1-205Parallel queries

Example Otto Email Scraper input

{
"keywords": ["haendler", "marke", "lieferant"],
"location": "Hamburg",
"customDomains": ["@web.de", "@gmx.de", "@gmail.com"],
"maxEmails": 100,
"countryCode": "DE",
"expandQueries": true,
"queryModifiers": ["email", "kontakt", "grosshandel", "kundenservice", "vertrieb"],
"maxPagesPerQuery": 30,
"maxConcurrency": 5
}

The location field appends a phrase to every query. German city names work here — Hamburg, Berlin, Muenchen, Koeln, Frankfurt. On a low-yield platform like this one, location filtering narrows an already narrow result set, so use it sparingly.

Otto Email Scraper output fields

Every dataset item the Otto Email Scraper writes carries all fourteen of these fields.

FieldMeaning
networkPlatform name
keywordThe keyword that produced the lead
queryThe exact Google query used
titleRaw result title
accountNameAccount label Google prints
fullNameDisplay name parsed from a profile-style title; empty for post captions
usernameURL-safe handle when the platform exposes one; otherwise null
profileUrlCanonical account URL when a handle is known; otherwise empty
urlDirect platform link when exposed, else the profile URL
descriptionBio or snippet text, cleaned of labels and engagement counters
emailLower-cased email address
emailDomainThe matched domain
possiblyTruncatedtrue when Google's snippet ellipsis touched the email
foundAtISO 8601 UTC timestamp

Example Otto Email Scraper output

[
{
"network": "Otto",
"keyword": "marke",
"query": "site:otto.de marke \"@web.de\" kontakt",
"title": "NordWohnen - Marken bei OTTO",
"accountName": "NordWohnen",
"fullName": "NordWohnen",
"username": "nordwohnen",
"profileUrl": "https://www.otto.de/marken/nordwohnen",
"url": "https://www.otto.de/marken/nordwohnen",
"description": "Moebelmarke aus Norddeutschland. Kontakt: vertrieb.nordwohnen@web.de",
"email": "vertrieb.nordwohnen@web.de",
"emailDomain": "@web.de",
"possiblyTruncated": false,
"foundAt": "2026-08-31T11:20:07Z"
},
{
"network": "Otto",
"keyword": "lieferant",
"query": "site:otto.de lieferant \"@gmx.de\" grosshandel",
"title": "Grosshandel und Lieferanteninformationen - OTTO",
"accountName": "OTTO Lieferanteninfo",
"fullName": "",
"username": null,
"profileUrl": "",
"url": "",
"description": "Anfragen fuer Lieferanten: einkauf.beispielmarke@gmx.de",
"email": "einkauf.beispielmarke@gmx.de",
"emailDomain": "@gmx.de",
"possiblyTruncated": true,
"foundAt": "2026-08-31T11:21:33Z"
}
]

The second row is the more typical shape on this platform. username is null and profileUrl is empty because Google printed an informational page title rather than a brand handle, so no https://www.otto.de/marken/... URL can be built. The email and the account label are still usable.

What a measured Otto Email Scraper run looked like

A live test run against otto.de returned only 1 result block. That is not a defect in the parser; it is what OTTO's first-party structure and German-language indexing produce.

Treat the Otto Email Scraper as a supplementary source, not a primary lead engine. It is genuinely useful for filling gaps in a German brand-and-supplier list. It is not the Otto Email Scraper to point at if you need hundreds of contacts quickly.

Use cases for the Otto Email Scraper

Here is where the Otto Email Scraper fits into real prospecting and research workflows.

Use caseHow to configure it
German brand contact discoverykeywords: ["marke","hersteller"], countryCode: "DE", customDomains: ["@web.de","@gmx.de"]
Supplier and wholesale researchLean on the grosshandel and vertrieb modifiers
Filling gaps in an existing DE listMatch accountName against brands you already track and add missing emails
Press and partnerships outreachAdd presse and partner as keywords
Market researchAnalyse the query and keyword fields to see which German phrasings surface contact details
Competitive brand mappingCollect which brands OTTO surfaces publicly, alongside any contact data
Cross-market enrichmentRun alongside the Zalando and Allegro Actors to build a wider European picture
Data-quality benchmarkingCompare the yield here with a true marketplace to calibrate expectations

Practical Otto Email Scraper recipes

Minimum viable run. German defaults, countryCode: "DE", maxEmails: 50. This is the honest baseline. If it returns little, that is information about the platform, not a misconfiguration.

Umlaut A/B test. Run haendler/grosshandel once, then händler/großhandel once, and compare. Google usually treats these as equivalent, but it costs one small run to confirm for your keywords.

Supplier angle. Drop seller-flavoured terms entirely and use lieferant, hersteller and marke. This matches how OTTO's own pages are actually written and tends to be the more productive framing.

Widen before you deepen. On a low-yield platform, more keywords beats more pages. Raise maxPagesPerQuery last; add German keyword variants first.

Responsible use and GDPR

Germany applies the GDPR alongside the BDSG and the UWG, which is strict about unsolicited commercial email. An address that identifies a natural person is personal data even when it was published on a public web page.

Public availability is not consent. Establish a lawful basis before your first message. German rules on unsolicited B2B email are notably tighter than in several other EU markets, so do not assume legitimate interest covers you automatically.

Practical steps that keep an Otto Email Scraper workflow defensible:

  • Strongly prefer role addresses (kontakt@, vertrieb@, presse@) over addresses naming an individual.
  • Keep provenance for every lead — the query, url and foundAt fields exist for exactly this.
  • Include a clear sender identity, a stated purpose and a working opt-out in every message.
  • Honour opt-outs immediately and check suppression lists before every follow-up.
  • Delete data you are not actively using instead of warehousing scraped lists.
  • Take German legal advice specifically on the UWG before running cold email at scale.

This is operational guidance, not legal advice.

The Otto Email Scraper is part of an E-commerce and Marketplaces family sharing this engine. For a German picture, run it beside the Zalando Email Scraper — also a first-party retailer, with the same brand-page caveat. For genuine third-party marketplace sellers in Europe, the Allegro Email Scraper and Cdiscount Email Scraper are more productive, and German independent shops are often reachable through the Shopify Store Email Scraper.

ActorWhat it collects
Otto Email and Phone Number ScraperEmails and phone numbers from Otto
Otto Phone Number ScraperPublic phone numbers from Otto
AliExpress Email ScraperPublic contact emails from AliExpress
Allegro Email ScraperPublic contact emails from Allegro
Amazon Email ScraperPublic contact emails from Amazon
Best Buy Seller Email ScraperPublic contact emails from Best Buy
BigCommerce Store Email ScraperPublic contact emails from BigCommerce Store
Cdiscount Email ScraperPublic contact emails from Cdiscount
Coupang Email ScraperPublic contact emails from Coupang
Depop Email ScraperPublic contact emails from Depop
DHgate Email ScraperPublic contact emails from DHgate
eBay Email ScraperPublic contact emails from eBay
Ecwid Store Email ScraperPublic contact emails from Ecwid Store
Etsy Email ScraperPublic contact emails from Etsy
Faire Email ScraperPublic contact emails from Faire
Flipkart Email ScraperPublic contact emails from Flipkart
Home Depot Seller Email ScraperPublic contact emails from Home Depot
JD.com Email ScraperPublic contact emails from JD.com
Lazada Email ScraperPublic contact emails from Lazada
Lowe's Seller Email ScraperPublic contact emails from Lowe's
MercadoLibre Email ScraperPublic contact emails from MercadoLibre
Mercari Email ScraperPublic contact emails from Mercari
Newegg Email ScraperPublic contact emails from Newegg
Overstock Email ScraperPublic contact emails from Overstock
Poshmark Email ScraperPublic contact emails from Poshmark
Rakuten Email ScraperPublic contact emails from Rakuten
Shopee Email ScraperPublic contact emails from Shopee
Shopify Store Email ScraperPublic contact emails from Shopify Store
Taobao Email ScraperPublic contact emails from Taobao
Target Seller Email ScraperPublic contact emails from Target
Temu Email ScraperPublic contact emails from Temu
Tmall Email ScraperPublic contact emails from Tmall
Vinted Email ScraperPublic contact emails from Vinted
Walmart Email ScraperPublic contact emails from Walmart
Wayfair Email ScraperPublic contact emails from Wayfair
Wish Email ScraperPublic contact emails from Wish
Wix Stores Email ScraperPublic contact emails from Wix Stores
WooCommerce Email ScraperPublic contact emails from WooCommerce
Zalando Email ScraperPublic contact emails from Zalando
AliExpress Email and Phone Number ScraperEmails and phone numbers from AliExpress
Allegro Email and Phone Number ScraperEmails and phone numbers from Allegro
Amazon Email and Phone Number ScraperEmails and phone numbers from Amazon

Otto Email Scraper limitations

Read these before planning anything around the output.

  • OTTO is a first-party retailer with mostly German-language pages, so results are brand pages rather than seller profiles. Set countryCode to DE and use German keywords. This is the defining limitation of the Otto Email Scraper.
  • Very low measured yield. A live test run returned only 1 result block. Expect a supplementary trickle, not a lead firehose.
  • Publicly indexed emails only. The Otto Email Scraper finds addresses already visible in Google's index. Nothing behind a login or an internal contact form is reachable.
  • Google's ~300-result cap. A single query returns roughly 300 results at most, which is why expandQueries defaults to true.
  • possiblyTruncated. When true, Google's snippet ellipsis touched the email and it may be cut off. Verify before sending.
  • username and profileUrl are frequently empty. Google often prints a page title with no brand handle, so no canonical https://www.otto.de/marken/... URL can be built. That is a Google limitation, not a bug.
  • Apify GOOGLE_SERP proxy required. The Otto Email Scraper cannot run without Apify proxy credentials.
  • Free-plan cap. Free Apify plans stop at 100 emails per run. Paid plans are uncapped.
  • No guaranteed volume. Results vary with keywords, domains, location and Google's index on the day.
  • Not affiliated with OTTO. This is an independent tool, not supported, endorsed by or connected to OTTO.

Otto Email Scraper FAQ

Common questions about the Otto Email Scraper, its inputs and its output.

How many results should I expect from the Otto Email Scraper?

Very few. A live test run returned only 1 result block. OTTO is a first-party retailer with mostly German-language pages, so results are brand pages rather than seller profiles, and the pool of indexed pages carrying public emails is small. Plan for a supplementary source.

Why is the yield so much lower than on Allegro or Cdiscount?

Those are genuine third-party marketplaces with thousands of indexed seller pages. OTTO sells largely its own stock, so there are far fewer independent seller pages for Google to index.

Does the Otto Email Scraper log into OTTO?

No. It never logs in, never calls an OTTO API and never opens otto.de in a browser. It reads Google results through the Apify GOOGLE_SERP proxy.

What should I set countryCode to?

DE. This is explicitly recommended in the Otto Email Scraper's input description. Without it, Google is unlikely to rank otto.de pages highly enough for the Otto Email Scraper to reach them.

Why are the default keywords German, and why without umlauts?

otto.de is indexed in German, so German terms are required. The ASCII forms haendler and grosshandel are used because Google treats them as broadly equivalent to the umlaut spellings and they travel more reliably through query building. Test both if you want.

Which email domains work best for OTTO?

Start with @web.de, @gmx.de and @gmail.com. @gmx.net and @t-online.de are worth testing. These are suggestions based on German market habits, not guarantees.

Whose emails am I actually finding?

Mostly supplier, brand and press contacts published on OTTO's own pages — not marketplace-seller inboxes. Set expectations accordingly.

Why is username empty on so many rows?

Google frequently prints an informational or category title rather than a brand handle. Without a handle there is no canonical profile URL to build. accountName and email are still populated.

Does the Otto Email Scraper verify deliverability?

No. It extracts and normalises what Google indexed. Check rows flagged possiblyTruncated before using them.

Can I resume an interrupted run?

Yes. State lives in the key-value store keyed by a hash of your input, with saves on Apify's PERSIST_STATE, MIGRATING and ABORTING events.

What happens when Google blocks a request?

Block, CAPTCHA and consent pages are detected rather than treated as empty. Pages get up to three attempts with exponential backoff, and failed queries are re-queued once at the end of the run.

The Otto Email Scraper only reads publicly indexed Google results. Whether you may contact those addresses is a separate GDPR and UWG question — see the responsible use section and take your own legal advice.

Leave a review

If the Otto 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, a bug, or you need a custom build of the Otto Email Scraper? Contact neurodata.apify@gmail.com.