Contact details and e-commerce product scrapers on Apify: copy-paste inputs and API examples
Two polite, ToS-aware Apify Actors from Unadhi, with ready-to-run inputs and API snippets.
| Actor | What you give it | What you get | Store page |
|---|---|---|---|
| Contact Details Scraper: Emails, Phones, Socials | Company websites, a domain list, or the dataset ID of a Google Maps run | One de-duplicated row per website: role emails (MX-checked), E.164 phones, WhatsApp/Telegram links and social profiles, each with the page it was found on | apify.com/laudable_instrument/contact-details-scraper-half-price |
| E-commerce Product Scraper: Shopify & Woo | Shop homepages, category pages or product URLs | One row per product: title, brand, price, currency, sale price, stock, SKU/GTIN, variants, images | apify.com/laudable_instrument/ecommerce-product-data-half-price |
Current pricing is shown on each Store page.
1. Contact Details Scraper
Enrich a Google Maps scrape
Run any Google Maps Actor first, then pass its dataset ID. Branches that share a website are crawled once.
{ "datasetId": "", "maxPagesPerSite": 4, "defaultCountry": "IN" }
Or give it a list of sites
{
"urls": ["kimshospitals.com", "https://www.fmsdental.com"],
"startUrls": [{ "url": "https://www.zoho.com" }],
"maxPagesPerSite": 4,
"checkEmailMx": true,
"defaultCountry": "IN"
}
Output (one row per site, shortened)
{
"domain": "tanishq.co.in",
"status": "ok",
"pagesScraped": 4,
"phones": [{ "phone": "+918147349242", "source": "text", "whatsapp": "https://wa.me/918147349242" }],
"counts": { "emails": 0, "phones": 3, "socialProfiles": 4, "whatsapp": 1 }
}
status is one of ok, blocked-by-robots, blocked-by-terms, blocked-by-tos-list, blocked-by-site, rate-limited or failed.
Privacy default: only shared role mailboxes (info@, sales@, support@) are returned. Addresses that identify one person are dropped and counted unless you turn them on with includePersonalEmails. Personal contact data falls under India's DPDP Act and the EU/UK GDPR, so only switch that on with a lawful basis. This is general information, not legal advice.
2. E-commerce Product Scraper (Shopify, WooCommerce, any shop)
{
"startUrls": [{ "url": "https://scrapeme.live/shop/" }, { "url": "https://nomadgoods.com" }],
"maxProductsPerShop": 100,
"maxListingPages": 10,
"includeDescription": true
}
Sources, best first: Shopify products.json, the WooCommerce Store API, schema.org JSON-LD, microdata, OpenGraph. Before fetching a shop it checks robots.txt and scans the shop's terms of service, and skips the shop if they forbid scraping. Marketplaces such as Amazon, eBay and Flipkart are never fetched. A SHOPS_SUMMARY record lists every shop and why it was or wasn't scraped.
Run either one from code
Python (pip install apify-client)
from apify_client import ApifyClient
client = ApifyClient("")
run = client.actor("laudable_instrument/contact-details-scraper-half-price").call(
run_input={"urls": ["zoho.com", "basecamp.com"], "maxPagesPerSite": 4}
)
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
print(item["domain"], item["counts"])
curl (synchronous run, returns the dataset items)
curl -X POST \
"https://api.apify.com/v2/acts/laudable_instrument~ecommerce-product-data-half-price/run-sync-get-dataset-items?token=" \
-H "Content-Type: application/json" \
-d '{"startUrls":[{"url":"https://scrapeme.live/shop/"}],"maxProductsPerShop":20}'
What our own tests showed (29 Sep 2026)
- Contact Details, 20 real company websites: 14 returned data, which was every site that allowed crawling. The other 6 (robots.txt or HTTP 403) were reported and skipped. 3.8 pages per site on average.
- E-commerce, 32 shop URLs: 536 products from 11 shops. On a re-check of 88 products, title and price matched the page on all 88.
These are one-off measurements on our test lists, not guarantees for your sites.
Responsible use
Both Actors read only public pages, use an honest bot User-Agent, follow robots.txt, never log in and never get around blocks. You are responsible for how you use the data.
Unadhi Guides are free, independent explainers. We correct errors as soon as we find them: write to mininglife7@gmail.com.