Keyword Shop Finder — Ecommerce Leads & Retailers by Product
Pricing
from $7.00 / 1,000 verified shops
Keyword Shop Finder — Ecommerce Leads & Retailers by Product
Find online stores and retailers that sell a product, in any country and language. Enter a product keyword, get independent e-commerce shops with business email, platform (Shopify, WooCommerce…) and domain age. Marketplaces and blogs filtered out. Pay only per verified shop.
Pricing
from $7.00 / 1,000 verified shops
Rating
0.0
(0)
Developer
Deep Mind
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
4 days ago
Last modified
Categories
Share
Find online stores and retailers that sell a specific product — in any country and language — with a verified business email for each shop.
Enter a product keyword (cork yoga mat, arnés para perro, machine à expresso manuelle) and a market (us/en, de/de, fr/fr). Keyword Shop Finder searches Google for that product, opens every result, keeps only independent online shops that actually sell it, and finds their business email, e-commerce platform and domain age. You get a clean list of e-commerce leads, not a pile of links: marketplaces, blogs, price comparators and off-topic stores are filtered out.
Built for anyone who sells to online stores: brands and manufacturers looking for retailers and stockists, wholesalers and distributors, dropshipping and fulfilment platforms recruiting merchants, marketplaces onboarding sellers, agencies, SaaS and logistics vendors prospecting e-commerce brands.
What does Keyword Shop Finder do?
- Finds online stores by product, not by platform or category: "who sells gooseneck kettles in the US", "who sells yoga mats in Germany".
- Works in any Google country and language —
de/de,fr/fr,es/es,it/it,nl/nl,pl/pl,br/pt,mx/esand so on. Keywords are searched in the market's own language. - Works on any shop platform — Shopify, WooCommerce, Magento, PrestaShop, OpenCart, BigCommerce, Squarespace and custom builds.
- Checks every site with an AI classifier: is it a real shop, does it sell this product, who is the merchant behind an affiliate page.
- Finds a business email on the shop's own pages (contact, imprint, about) and checks its mail server.
- Adds the domain registration date, so you can spot new shops that are still choosing suppliers.
- Charges only for verified shops. Uncertain and rejected sites are delivered free.
The Apify platform adds the rest: API access, scheduled runs, integrations (Google Sheets, Zapier, Make, n8n, webhooks), export to CSV/Excel/JSON, and access for AI agents through the Apify MCP server.
What data do you get?
One row per unique shop domain:
| Field | Meaning |
|---|---|
domain, shop_name, source_url | The shop, its name and the Google result that was checked |
final_label | shop — independent online store selling the searched product · uncertain — site could not be read (WAF/403) · non_shop — media, marketplace, blog, price comparator, corporate site, affiliate page or off-topic store |
best_email + email_status | Business mailbox found on the site itself, ranked sales@ > orders@ > info@ > contact@, MX-checked. A suggested info@ is labelled guessed, never presented as found. |
site_type, platform, category | online_shop / b2b_supplier / marketplace / …; Shopify, WooCommerce, Magento, PrestaShop, OpenCart, custom; product vertical |
phones, emails_all | Other phone numbers and emails found on the shop's pages |
product_match | yes / related / no — does the site sell the searched product itself |
registered_at, domain_age_years | Domain registration date from RDAP/whois |
keyword, country, n_keywords, keywords | Which of your keywords and markets returned this domain |
final_confidence, rationale, fetch_status | Why the verdict was reached |
Plus report.xlsx in the key-value store — three sheets (shops, uncertain, rejected), rows coloured green / yellow / red — and summary.json with counts per keyword.
The dataset exports as JSON, JSONL, CSV, XLSX, XML, HTML or RSS (…/items?format=csv&view=shops) and plugs into Google Sheets, Zapier, Make, webhooks and the Apify MCP server without extra steps.
How to find online stores that sell a product
- Open the Actor and enter Product keywords — one per line, in the market's language. Specific beats generic:
cork yoga blockfinds shops,yogafinds magazines. - Enter Markets as
country/language:us/en,gb/en,de/de,fr/fr,es/es,it/it,nl/nl,pl/pl,br/pt,mx/es… - Leave SERP pages per query at 5 (50 Google results) for a first look; use 10 pages for exhaustive lists.
- Click Start. A 3-keyword × 1-market run with 5 pages takes about 3–5 minutes and returns 30–60 shops.
- Download the shop list (CSV, Excel, JSON) or
report.xlsxfrom the Output tab, or pull it via API, Zapier, Make or Google Sheets.
Input example
{"keywords": ["cork yoga mat", "cork yoga block"],"markets": ["de/de", "gb/en"],"maxPages": 5,"includeWhois": true,"includeContacts": true}
Output example
{"domain": "espressoparts.com","final_label": "shop","final_confidence": 0.97,"site_type": "online_shop","platform": "shopify","product_match": "yes","best_email": "info@espressoparts.com","email_status": "valid","registered_at": "1997-08-06","domain_age_years": 29.2,"keyword": "gooseneck kettle","country": "us","source_url": "https://www.espressoparts.com/collections/accessories-kettles","rationale": "strong-llm shop + html agrees relevance=yes"}
How much does it cost to find online shops?
You pay per verified shop (final_label = shop): $0.01 per shop, so 100 shops cost about $1, plus a start fee of $0.005 per GB of memory ($0.01 at the default 2 GB). The Pricing tab always shows the current prices.
- Uncertain rows (sites behind a WAF) and rejected rows (marketplaces, media, off-topic stores) are pushed to the dataset free of charge.
- If the classifier is unavailable, the run fails before writing anything — you are never charged for unverified data.
- Set a Maximum cost per run and the Actor plans the search to fit it up front (fewer pages first, then fewer keywords/markets) instead of stopping half-way; the status message tells you what was trimmed.
- Results from your previous runs are cached in your account (Google results 14 days, verdicts and contacts 30 days), so repeated or overlapping keywords run faster.
The number of shops depends on keywords × markets × maxPages. In consumer niches one keyword × one market at 5 pages typically yields 20–30 shops.
Is it free to try?
Yes. On the Apify free plan you can run 1 keyword × 1 market × 2 Google pages per run (about 10 domains, typically 3–8 shops with email). Extra keywords, markets and pages are dropped and the run's status message says so. Paid Apify plans have no such cap — only the run's Maximum cost applies.
Options
| Input | Default | Notes |
|---|---|---|
maxPages | 5 | Google pages per keyword × market (10 results each). Result counts drop sharply after page 5 for most products. |
includeWhois | on | Registration date + age. Adds ~1 s per domain. |
includeContacts | on | Crawl contact pages and MX-check emails. |
includeRejected | off | Also push non_shop rows to the dataset (they are always in report.xlsx). |
maxDomains | 300 | Safety cap on domains classified per run. |
useCache / refreshCache | on / off | Reuse or ignore data from your previous runs. |
How it works
- Search. Each keyword × market pair is searched on Google (country + language), up to 10 pages of organic results.
- Filter. Known marketplaces, platforms, media and social sites (Amazon, eBay, Etsy, AliExpress, IndiaMART, YouTube, Reddit …) are dropped before fetching.
- Fetch. Every remaining landing page is downloaded with a tiered fetcher (plain HTTP → browser-grade TLS fingerprint → homepage fallback when the result URL is dead).
- Classify. A Claude model reads a digest of the page and returns a structured verdict: is this site a shop, what type, does it sell this product, who is the real merchant behind an affiliate or doorway page. The prompt and decision rules are calibrated on a 749-domain hand-labelled set: precision 0.93, recall 0.92.
- Contacts. For shops and uncertain sites, up to 5 contact/imprint/about pages are crawled for emails and phones; every address is MX-validated.
- Whois. RDAP → whois fallback chain for the registration date.
- Output. Dataset items,
report.xlsx,summary.json.
What is not a shop
The classifier is deliberately strict, because a lead list full of Amazon listings and blog posts is worthless:
- marketplaces and platforms (Amazon, eBay, Etsy, AliExpress, Ozon, Wildberries, IndiaMART, TradeIndia …) — even when they sell the product;
- price comparators and affiliate landing pages (the real merchant goes to
redirect_to); - media, blogs, forums, encyclopaedias, government pages;
- corporate/brand sites without a storefront;
- real shops that do not sell the searched product (a goggles store that ranked for "yoga mat" is
non_shop,product_match=no).
B2B manufacturers and wholesalers that sell the product on their own domain are shops (site_type=b2b_supplier) — they are often exactly who you are looking for.
Keyword Shop Finder vs. store-leads databases
| Keyword Shop Finder | Store-leads databases (Store Leads, StoreCensus, BuiltWith) | Shopify-only store finders | |
|---|---|---|---|
| Search by | product keyword, as typed into Google | platform, category, installed apps | keyword within Shopify stores |
| Freshness | live Google search on every run | periodic index | varies |
| Platforms | any (Shopify, WooCommerce, Magento, PrestaShop, custom …) | the ones they index | Shopify only |
| Countries and languages | any Google country / language pair | filter by store country | varies |
| Checks that the shop sells your product | yes (product_match) | no | varies |
| Email source | the shop's own pages, MX-checked | database | varies |
Use Keyword Shop Finder when you need "who sells X in Germany right now". Use a database when you need "all Shopify stores in the Home category".
Limitations
- Sites behind a hard Cloudflare / WAF challenge cannot be read and land in
uncertain(typically big retail chains — Fnac, Darty, Leroy Merlin, Kroger). They are listed withfetch_statusso you can check them by hand. - The verdict is about the site, not the exact page: a shop whose landing page is a blog post is still a shop.
- Large retail chains and brand-owned stores (Decathlon, Carrefour, Le Creuset …) are real shops and are labelled as such; use
domain_age_years,platformandsite_typeto filter them out if you only want independents. - Emails come only from the site's own HTML. Sites that publish no email get
email_statusempty or a clearly labelledguessedinfo@ address. - Google results differ by day and by data centre; two runs of the same keyword may differ by a few domains.
FAQ
How do I find online stores that sell a specific product?
Enter the product as you would type it into Google — cork yoga block, gooseneck kettle, arnés para perro — and the market (gb/en, es/es). The Actor reads Google's organic results for that exact query, opens every site and keeps only independent online shops that actually sell the product. Marketplace listings, reviews, blogs and price comparators are dropped.
How do I find retailers or stockists for my product?
Search for products similar to yours or the category you sell into: a maker of linen aprons searches linen apron, linen tea towel, linen kitchen textiles in each target market. Every shop in the result already sells that category online — the warmest possible list of potential stockists, with a business email for the first contact.
How do I find online shops in Germany, France, Spain or another country?
Set the market to the country and its language and write the keyword in that language: de/de + yogamatte kork, fr/fr + tapis de yoga en liège, es/es + esterilla de yoga de corcho. Add several markets in one run to cover a region; results are merged by domain.
Is this an e-commerce leads database?
No. Databases index stores by platform and category and refresh periodically. This Actor searches live, by product keyword, in any country and language, on any platform, and checks that each shop sells your product. See the comparison table above.
Can I find Shopify stores selling a product?
Yes. Every shop gets a platform field; filter the dataset by platform = shopify. In our test runs 50–70% of shops were on Shopify, the rest on WooCommerce, Magento, PrestaShop, BigCommerce, Squarespace and custom builds.
How do I find distributors, wholesalers or B2B suppliers?
Use wholesale phrasing (wholesale cork yoga blocks, bamboo cutting board manufacturer). Manufacturers, wholesalers and exporters selling on their own domain are kept as shops with site_type = b2b_supplier. B2B marketplaces (Alibaba, IndiaMART, TradeIndia) are filtered out.
Where do the emails come from? Are they verified?
Only from the shop's own pages: the landing page plus up to 5 contact, imprint and about pages. Every address is checked for a valid mail server (MX record). If a shop publishes no email, email_status stays empty, or shows guessed for a suggested info@ address — never presented as found.
How many shops will I get?
It depends on the niche. One keyword × one market at 5 pages typically returns 20–30 shops in consumer niches, fewer for very specific or B2B products. Use several keyword variants and markets to build a larger list; duplicates are merged by domain.
Can I run it on a schedule, via API or from my own code?
Yes — Apify schedules, the REST API, the Python and JavaScript clients, integrations with Zapier, Make, n8n and Google Sheets, and webhooks. Google results are cached for 14 days; for a scheduled re-scan turn on Ignore cached data so the search is fresh.
Can AI agents use it?
Yes. The Actor is available through the Apify MCP server, and every output field is described in the dataset schema, so an AI assistant can find it, run it and interpret the results.
Is it legal to collect shop contacts?
The Actor only collects information that any visitor of the site can see: public Google results, public web pages, public whois records. You are responsible for how you use the data — in particular for complying with GDPR, CAN-SPAM, PECR and similar rules when contacting the businesses found. Business contact addresses (info@, sales@) are the intended output; do not use the Actor to harvest personal data.
Support
Use the Issues tab on the Actor page. Please include the run ID and the keyword/market that misbehaved — a wrong verdict with the domain is the most useful bug report.