Skip to content

tomba-io/shopify-store-email-finder

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Shopify Store Email Finder

Powered by Tomba Email Finder Python

Tomba Domain Search — One domain. Every email.

Powered by Tomba's Domain Search API — find every verified email behind any company domain.

Demo: bulk emails for allbirds.com in one curl

Find the verified contact emails behind any Shopify store — bulk, by domain. Two ways to get started: a fully managed web app, or a self-service Python script powered by the Tomba REST API.


Option 1: Tomba Email Finder — Managed Web App (Recommended)

Tomba Email Finder is the fastest way to surface verified emails for any company domain — including every Shopify store in your target list. No code, no infrastructure, no rotating keys: paste a domain, get every prospect-ready email with score, position, department, and source URL.

Why teams choose Tomba:

  • 🚀 Zero setup — bulk upload a CSV of Shopify domains, get results in minutes
  • 🤖 Verified deliverability — every email runs through Tomba's 7-step verifier (MX, SMTP, catch-all, role, disposable)
  • Real-time — public sources re-crawled continuously, so contact data stays fresh
  • 🌍 Worldwide coverage — 100M+ verified business emails across every industry
  • 🔗 Plug-and-play integrations — HubSpot, Salesforce, Pipedrive, Google Sheets, Zapier, Make
  • 🛡️ GDPR / CCPA compliant — opt-out registry, source attribution, audit trail

Key use cases:

  • Find emails for any Shopify merchant — by store domain, brand name, or vanity URL
  • Targeted founder / CEO outreachfirst_name + last_name + domain → likely email + score
  • Bulk CSV enrichment — upload Shopify store domains, download a contact-ready CSV
  • ✅ Verify catch-all domains so your cold outbound doesn't bounce
  • ✅ Enrich CRM accounts with company size, industry, founded date, and social profiles
  • ✅ Feed verified leads directly into outbound sequences or AI SDR tools

Free tier: 50 finds + 50 verifications / month, no credit card.  Get a free key →


Option 2: Build Your Own with Python

Need results piped into your own pipeline, scheduler, or data warehouse? This repo is a tiny, zero-magic Python script that calls the Tomba REST API directly — no SDK, no framework, one file.

Build your Shopify email finder in minutes

  1. Drop your Shopify store domains into a text file
  2. Run python shopify_emails.py < stores.txt
  3. Pipe the JSON / CSV into your CRM, BigQuery, or jq
  4. Edit shopify_emails.py to tune fields, filters, or output format — it's <300 lines

Prerequisites

  • Python 3.9 or higher
  • A free Tomba account (50 finds + 50 verifications/month)
  • Your TOMBA_KEY + TOMBA_SECRET (Dashboard → API)

Setup

  1. Clone this repository

    git clone https://github.com/tomba-io/shopify-store-email-finder.git
    cd shopify-store-email-finder
  2. Install dependencies

    pip install -r requirements.txt
  3. Configure credentials

    Copy .env.example to .env and fill in your values:

    cp .env.example .env
    TOMBA_KEY=ta_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
    TOMBA_SECRET=ts_xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx

    Loading the env file: in bash, set -a; source .env; set +a exports both variables for the current shell.


Usage

Once TOMBA_KEY and TOMBA_SECRET are in your environment, the Python interface works three ways:

1. Find Emails by Shopify Store Domain

Pass a list of store domains to bulk-retrieve every contact email Tomba has for each:

from shopify_emails import find_emails_by_store

stores = [
    "allbirds.com",
    "bombas.com",
    "gymshark.com",
]

results = find_emails_by_store(stores, limit_per_store=10)
for r in results:
    print(f"{r['store']:20} {r['email']:35} score={r['score']} {r['position']}")

Or run directly from the shell:

# args
python shopify_emails.py allbirds.com bombas.com gymshark.com

# stdin (one domain per line)
cat examples/shopify-stores.txt | python shopify_emails.py

# CSV out
cat examples/shopify-stores.txt | python shopify_emails.py --csv > shopify-emails.csv

2. Targeted Lookup: known person at a known store

When you already have a first / last name (e.g. from a LinkedIn search) and just want the working email:

from shopify_emails import find_specific_person

hit = find_specific_person("allbirds.com", first_name="Joey", last_name="Zwillinger")
print(hit["email"], hit["score"], hit["position"])

3. Verify deliverability

Run any email through Tomba's verifier before you send:

from shopify_emails import verify_email

check = verify_email("ceo@allbirds.com")
print(check["result"], check["score"], check["status"])
# -> deliverable 99 Valid

The curl equivalent

The script is just a polite wrapper around one HTTP call per domain. If you'd rather skip Python entirely:

curl -G 'https://api.tomba.io/v1/domain-search' \
     --data-urlencode 'domain=allbirds.com' \
     --data-urlencode 'limit=10' \
     -H "X-Tomba-Key: $TOMBA_KEY" \
     -H "X-Tomba-Secret: $TOMBA_SECRET" \
  | jq '.data.emails[] | {email, score, position, department}'

Full curl reference — every parameter, every endpoint

The examples/curl/ directory ships 13 runnable bash scripts covering every /domain-search parameter plus the related /email-count, /email-finder, and /email-verifier endpoints. Each script has a matching *.output.json captured from the live API, so you can see exactly what the response looks like before spending a credit.

Script What it shows
01 01-basic-search.sh Plain domain= call
02 02-paginated.sh page=2 & limit=5 pagination
03 03-personal-only.sh type=personal — drop shared inboxes
04 04-generic-only.sh type=generic — only info@, press@, …
05 05-by-department-executive.sh department=executive — founders, C-suite
06 06-by-department-marketing.sh department=marketing
07 07-by-country-us.sh country=US geo-filter
08 08-combined-filters.sh Stacked filters: US execs only
09 09-live-smtp-verify.sh live=true real-time SMTP probe
10 10-enrich-mobile.sh enrich_mobile=true (paid add-on)
11 11-email-count.sh /v1/email-count — totals per dept + seniority
12 12-email-finder.sh /v1/email-finder — guess by name
13 13-email-verifier.sh /v1/email-verifier — deliverability

See examples/curl/README.md for the full parameter reference table.


Output Fields

Each result record contains the following fields:

Field Description
store Company name (from Tomba's organization graph)
domain Shopify store domain queried
email Verified business email
first_name Contact first name
last_name Contact last name
full_name Contact full name
position Job title at the store
department Functional department (executive, marketing, sales, ...)
seniority Seniority level (executive, senior, junior)
type personal or generic (info@, support@, ...)
country ISO country code of the contact
linkedin LinkedIn profile URL
twitter Twitter handle
score Tomba confidence score (0–100)
verification_status valid, invalid, accept_all, unknown
industries Industry tag for the store
company_size Headcount band (e.g. 251-1K)
founded Year the store was founded
error Per-domain error message (empty on success)

Sample output

[
  {
    "store": "Allbirds",
    "domain": "allbirds.com",
    "email": "nick.polesky@allbirds.com",
    "first_name": "Nicholas",
    "last_name": "Polesky",
    "full_name": "Nicholas Polesky",
    "position": "Director II Product Planning",
    "department": "executive",
    "type": "personal",
    "country": "US",
    "linkedin": "https://www.linkedin.com/in/nicholas-polesky-649b2642",
    "score": 100,
    "verification_status": "valid",
    "industries": "Apparel and Fashion",
    "company_size": "251-1K",
    "founded": "2015",
    "error": ""
  }
]

A full canonical example lives in sample_output.json.


Advanced Options

The find_emails_by_store() function accepts optional parameters:

Parameter Type Default Description
limit_per_store integer 10 Max emails per domain. Snaps to nearest of {5, 10, 50, 100} (Tomba constraint)
client TombaClient new Reuse one client across calls (preserves rate-limit throttle)

CLI flags:

Flag Description
--csv Emit CSV to stdout instead of JSON
--limit N Cap emails per store (default 10)
--rps N Throttle: requests per second (default 5, env: TOMBA_RPS)
--version Print version and exit

Common questions

Will this work for *.myshopify.com subdomains? Yes. Tomba treats examplestore.myshopify.com the same as any other domain — though most merchants have a custom domain by the time they're worth prospecting. If you only have the myshopify URL, try both.

Does Tomba detect that a store is on Shopify? Yes, but separately. Use the Tomba Technology Finder API (or the official tomba-io/tomba CLI's technology command) to detect the tech stack of a domain (Shopify, WooCommerce, Magento, etc.) before running this script — useful if your input is a mixed list of ecommerce stores.

What about rate limits? The free plan allows 25 requests / second. The script throttles to 5 RPS by default; bump it with --rps 25 once you're on a paid plan.


Resources

Tomba products

Official Tomba CLI & SDKs

Integrations

Apify actors (no-code)


License

MIT — see LICENSE.


Built with Tomba — the email finder & verifier trusted by sales, recruiting, and research teams worldwide.

About

Find verified emails behind any Shopify store using the Tomba API

Topics

Resources

License

Stars

1 star

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages