Store Leads (E-Commerce)
Access 14M+ verified e-commerce store leads from Shopify, WooCommerce, Magento, and 7 other platforms. Specify totalLeads for bulk jobs and page through results with offset. Filter server-side by estimated monthly visits, revenue and employee count so you are only charged for stores that match.
$0.0039 per lead
POST /api/v1/scrape/store-leadsParameters
| Name | Type | Required | Description |
|---|---|---|---|
platform | string | Optional | E-commerce platform (case-insensitive). Omit to search all platforms.Example: "Shopify" |
totalLeads | number | Optional | Total leads to fetchExample: 50000 |
resumeFromLead | number | Optional | Resume from this lead number (useful for continuing a cancelled job)Example: 2500 |
countryCode | string | Optional | Two-letter country codeExample: "US" |
emails | boolean | Optional | Only return stores with email addressesDefault: trueExample: true |
phones | boolean | Optional | Only return stores with phone numbersDefault: falseExample: true |
category | string | Optional | Store category filter (case-insensitive)Example: "Apparel" |
city | string | Optional | City location filterExample: "New York" |
technologies | string | Optional | Filter by technologies usedExample: "Klaviyo" |
apps | string | Optional | Filter by installed apps (Shopify only)Example: "Yotpo" |
instagram | boolean | Optional | Has InstagramDefault: falseExample: true |
facebook | boolean | Optional | Has FacebookDefault: falseExample: true |
tiktok | boolean | Optional | Has TikTokDefault: falseExample: true |
youtube | boolean | Optional | Has YouTubeDefault: falseExample: true |
linkedin | boolean | Optional | Has LinkedInDefault: falseExample: true |
twitter | boolean | Optional | Has TwitterDefault: falseExample: true |
pinterest | boolean | Optional | Has PinterestDefault: falseExample: true |
planExclude | string[] | Optional | Exclude stores on these plan tiers, e.g. Shopify Plus (multiple allowed, case-insensitive)Example: "Shopify Plus" |
offset | number | Optional | Number of leads to skip before returning results, so you can page through them. Send offset 0 for the first batch, then bump it by your totalLeads each call (0, 100, 200, and so on). The response also returns a nextOffset you can send back directly. Without an offset, repeat calls with the same filters return the same first page.Example: 5000 |
minEstimatedMonthlyVisits | number | Optional | Only return stores with at least this many estimated monthly visits. Applied server-side, so stores below the threshold are never returned or billed. Alias: visitsMin.Example: 30000 |
maxEstimatedMonthlyVisits | number | Optional | Only return stores with at most this many estimated monthly visits. Applied server-side. Alias: visitsMax.Example: 5000000 |
minEstimatedMonthlySales | number | Optional | Minimum estimated monthly sales in USD (server-side). Alias: salesMin.Example: 10000 |
maxEstimatedMonthlySales | number | Optional | Maximum estimated monthly sales in USD (server-side). Alias: salesMax.Example: 1000000 |
minEmployeeCount | number | Optional | Minimum employee count (server-side). Alias: employeesMin.Example: 10 |
maxEmployeeCount | number | Optional | Maximum employee count (server-side). Alias: employeesMax.Example: 500 |
state | string | Optional | State / region filter (case-insensitive)Example: "California" |
fileName | string | Optional | Custom filename for exportExample: "Shopify_US_Fashion" |
Examples
Get 50,000 Shopify stores with email
curl -X POST https://app.scrapercity.com/api/v1/scrape/store-leads \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"platform": "Shopify",
"emails": true,
"totalLeads": 50000
}'
# Response:
{
"runId": "abc12345-...",
"totalLeads": 50000,
"estimatedCost": 195.00
}Resume from lead 2500
curl -X POST https://app.scrapercity.com/api/v1/scrape/store-leads \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"platform": "Shopify",
"emails": true,
"totalLeads": 5000,
"resumeFromLead": 2500
}'High-traffic stores only, paginated (no duplicates, no wasted rows)
curl -X POST https://app.scrapercity.com/api/v1/scrape/store-leads \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"platform": "Shopify",
"emails": true,
"minEstimatedMonthlyVisits": 30000,
"totalLeads": 5000,
"offset": 0
}'
# Only stores with 30k+ monthly visits are returned and billed.
# The response includes nextOffset - resend with "offset": 5000 for the next page.Check job status
curl https://app.scrapercity.com/api/v1/scrape/status/abc12345-... \
-H "Authorization: Bearer YOUR_API_KEY"
# Response:
{
"status": "RUNNING",
"handled": 15000,
"requested": 50000
}Download results when complete
curl -X GET https://app.scrapercity.com/api/downloads/{runId} \\
-H "Authorization: Bearer YOUR_API_KEY" \\
-o results.csvUse Cases
- •Build massive e-commerce lead lists for outreach
- •Find stores using specific technologies for SaaS sales
- •Target stores by social media presence
- •Research competitors by category and location
- •Generate leads for e-commerce service providers
Best Practices
- •Use totalLeads to specify how many leads you want
- •Use resumeFromLead to continue a cancelled job from where you left off
- •Cancel anytime - partial results are saved and downloadable
- •Poll /api/v1/scrape/status/{runId} to track progress
- •Download merged CSV from /api/downloads/{runId} when complete
- •Platforms: shopify, woocommerce, magento, squarespace, ecwid, bigcommerce, opencart, webflow, prestashop, demandware
Every scrape returns a runId. Poll GET /api/v1/scrape/status/{runId} until it completes, then download via GET /api/downloads/{runId}?format=csv.
Authenticate every request with Authorization: Bearer YOUR_API_KEY. See the full API reference for authentication, rate limits and error codes.