Salesforce AppExchange Email Scraper
Pricing
from $2.49 / 1,000 results
Salesforce AppExchange Email Scraper
Salesforce AppExchange Email Scraper SD - Salesforce AppExchange Email Scraper is a lead generation tool that extracts leads with public contact emails, account names and profile URLs from Salesforce AppExchange results by keyword, location and email domain - Salesforce AppExchange email extractor.
Pricing
from $2.49 / 1,000 results
Rating
0.0
(0)
Developer
Leads Scraper
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
15 days ago
Last modified
Categories
Share
Salesforce AppExchange Email Scraper
The Salesforce AppExchange Email Scraper builds a deduplicated contact list of AppExchange ISV partners, consulting partners and system integrators from Google's public index of appexchange.salesforce.com.
It is designed for partner recruitment, integration partnerships, agency sourcing and competitive research inside the Salesforce ecosystem.
No login, no Salesforce API, no browser automation — publicly indexed search results only.
One thing to know up front, because it shapes every dataset you will get: AppExchange listing URLs use opaque query-string ids, so most rows carry the partner email and listing name without a profile URL.
That is not a defect in the Salesforce AppExchange Email Scraper — it is how AppExchange addresses its own pages, with appxListingDetail?listingId=a0N3A0000... rather than a readable slug.
You still get the partner name, the listing title, the description snippet and the email; you often do not get a clickable profile link.
In our measured test runs the Salesforce AppExchange Email Scraper attached an account identity to 8 of 10 sampled rows. Identity here usually means a partner or listing name rather than a handle, for exactly the reason above. Yield varies with keywords, domain filter and country.
Who the Salesforce AppExchange Email Scraper is for
Partner and alliance teams recruiting ISVs, SaaS vendors looking for implementation partners, agencies sourcing subcontractors, and analysts mapping the Salesforce partner landscape. AppExchange listings are commercial storefronts, so the addresses on them exist precisely to receive partnership and support enquiries — a salesforce appexchange partner email is a business contact by design. Enterprise teams commonly run this alongside the HubSpot Marketplace Email Scraper to cover both major CRM ecosystems.
What the Salesforce AppExchange Email Scraper actually does
The Salesforce AppExchange Email Scraper does not sign into AppExchange, call any Salesforce API, or open the marketplace in a browser.
It builds Google queries with the site:appexchange.salesforce.com operator, fetches result pages through the Apify GOOGLE_SERP proxy with aiohttp, and parses each result block.
There is no headless browser, no JavaScript rendering, no authentication and no cookies.
Result blocks are located structurally — find the <h3> title, then take the smallest surrounding block — rather than depending on Google's CSS class names.
A domain-filtered regex extracts addresses from that block text, results are deduplicated globally, and every lead is pushed to the Apify dataset as soon as it is found.
A whole-page fallback parser keeps the run producing emails if Google's markup shifts.
That makes the Salesforce AppExchange Email Scraper a publicly indexed contact discovery tool for the Salesforce partner ecosystem. It reads what partners chose to publish on their listings. Nothing private, nothing gated.
Key features of the Salesforce AppExchange Email Scraper
| Feature | What it means for your Salesforce partner contact list |
|---|---|
site: targeting | Queries are scoped to appexchange.salesforce.com, so results stay inside the marketplace |
| Query expansion | Base, quoted and intitle: phrasings plus one variant per query modifier, per keyword x domain pair |
| Partner-tuned modifiers | Defaults are email, contact, support, developer, publisher — the words partner listings use |
| Domain filtering | Only addresses ending in your customDomains values are kept; leading @ optional |
| Global deduplication | One row per address per run, regardless of how many listings mention it |
| Obfuscation handling | Reads name [at] domain [dot] com, name (at) domain, name @ domain.com, domain .com, zero-width characters and the full-width @ |
| Junk filter | Rejects placeholders such as email@, yourname@, test@, xxx@ and single-character locals |
| Boundary-correct matching | @gmail.com cannot match inside @gmail.company or @gmail.com.br |
| Soft-wrap repair | Drops a hit that is only the tail of another email in the same result block |
| Async concurrency | An asyncio worker pool runs queries in parallel with a shared stop signal on maxEmails |
| Retries and backoff | Up to 3 attempts per page, exponential backoff, a fresh proxy session per request |
| Block detection | CAPTCHA, "unusual traffic" and consent pages are detected and retried, not counted as empty |
| Failed-query requeue | Blocked or failed queries get one more attempt at the end of the run |
| Resumable state | Key-value store state keyed by an input hash, saved on PERSIST_STATE, MIGRATING and ABORTING |
| Fallback parser | Whole-page extraction when Google's layout changes |
| Run summary | Logs pages fetched, blocked pages, retries and emails per page |
How the Salesforce AppExchange Email Scraper works, step by step
- Reads input: keywords, location, email domains and run limits.
- Builds Google queries such as
site:appexchange.salesforce.com salesforce partner consulting "@gmail.com". - Fetches Google result pages asynchronously through the Apify GOOGLE_SERP proxy.
- Locates each organic result block structurally and reads its visible text.
- Applies the domain filter, junk filter and soft-wrap repair to every candidate address.
- Deduplicates globally and streams each new lead into the dataset immediately.
Base queries run before expanded ones, so the highest-signal Salesforce AppExchange Email Scraper rows land first.
If you cut a run short at 100 emails, those come from the strongest phrasings, not an arbitrary corner of the expansion set.
The shared stop signal halts all workers the moment maxEmails is hit.
Input reference for the Salesforce AppExchange Email Scraper
| Field | Type | Default | Meaning |
|---|---|---|---|
keywords | array (required) | ["salesforce partner", "consulting"] | Search terms describing the partners you want |
location | string | "" | Optional location phrase added to every query |
customDomains | array | ["@gmail.com","@yahoo.com"] | Only emails on these domains are kept; @ optional |
maxEmails | integer 1-10000 | 20 | Stop after this many unique emails |
countryCode | string | "" | Two-letter country for the search proxy (US, GB, DE...) |
expandQueries | boolean | true | Search each keyword x domain in several phrasings |
queryModifiers | array | ["email","contact","support","developer","publisher"] | Extra words combined with each keyword when expansion is on |
maxPagesPerQuery | integer 1-50 | 30 | Page cap per query |
maxConcurrency | integer 1-20 | 5 | Parallel queries |
Example input for the Salesforce AppExchange Email Scraper
{"keywords": ["salesforce consulting partner","appexchange isv app","salesforce implementation partner"],"location": "United Kingdom","customDomains": ["@gmail.com", "@outlook.com"],"maxEmails": 400,"countryCode": "GB","expandQueries": true,"queryModifiers": ["email", "contact", "support", "developer", "publisher"],"maxPagesPerQuery": 30,"maxConcurrency": 5}
Use the vocabulary AppExchange listings use about themselves — "consulting partner", "managed package", "implementation partner", a specific cloud such as "Service Cloud". The Salesforce AppExchange Email Scraper matches indexed listing text, not a partner tier taxonomy.
Output reference: what the Salesforce AppExchange Email Scraper returns
Every dataset item carries all 14 fields, even when a value is empty or null.
| Field | Meaning |
|---|---|
network | Platform name |
keyword | The keyword that produced the lead |
query | The exact Google query used |
title | Raw result title |
accountName | Account label Google prints |
fullName | Display name parsed from a profile-style title; empty for non-profile results |
username | URL-safe handle when the platform exposes one; otherwise null |
profileUrl | Canonical account URL when a handle is known; otherwise empty |
url | Direct platform link when exposed, else the profile URL |
description | Listing snippet, cleaned of labels and counters |
email | Lower-cased email address |
emailDomain | The matched domain (e.g. @gmail.com) |
possiblyTruncated | true when Google's snippet ellipsis touched the email |
foundAt | ISO 8601 UTC timestamp |
Example output from the Salesforce AppExchange Email Scraper
[{"network": "Salesforce AppExchange","keyword": "salesforce consulting partner","query": "site:appexchange.salesforce.com salesforce consulting partner \"@gmail.com\"","title": "Northbridge CRM Consulting - Salesforce AppExchange","accountName": "Northbridge CRM Consulting","fullName": "Northbridge CRM Consulting","username": null,"profileUrl": "","url": "https://appexchange.salesforce.com/consulting","description": "Certified Salesforce implementation partner. Enquiries: northbridge.crm@gmail.com","email": "northbridge.crm@gmail.com","emailDomain": "@gmail.com","possiblyTruncated": false,"foundAt": "2026-08-31T11:21:08Z"},{"network": "Salesforce AppExchange","keyword": "appexchange isv app","query": "site:appexchange.salesforce.com appexchange isv app support \"@outlook.com\"","title": "Quote Engine for Sales Cloud - Salesforce AppExchange","accountName": "Quote Engine for Sales Cloud","fullName": "","username": "a0N3A00000ErHXXUA3","profileUrl": "https://appexchange.salesforce.com/appxListingDetail?listingId=a0N3A00000ErHXXUA3","url": "https://appexchange.salesforce.com/appxListingDetail?listingId=a0N3A00000ErHXXUA3","description": "CPQ add-on for Sales Cloud. Partner support: quoteengine.partners@outlook.com or...","email": "quoteengine.partners@outlook.com","emailDomain": "@outlook.com","possiblyTruncated": true,"foundAt": "2026-08-31T11:22:35Z"}]
The first row is the common AppExchange shape: a real partner name and a working email, with username: null and an empty profileUrl because the listing id was not in the result.
The second row shows what a resolved id looks like — an opaque a0N3A0000... string, not a readable handle.
Note possiblyTruncated: true on that row: verify the address before sending.
Use cases for the Salesforce AppExchange Email Scraper
| Use case | How the Salesforce AppExchange Email Scraper supports it |
|---|---|
| ISV partner recruitment | Find app publishers in adjacent categories and open a co-sell or bundling conversation |
| Consulting partner sourcing | Build a salesforce consulting partner contact list for implementation work you need delivered |
| Reseller and SI channel building | Identify system integrators already active in a vertical or region |
| Integration partnerships | Spot AppExchange apps whose customers would benefit from a two-way integration |
| Competitive and market research | Map who publishes in a category, with a contact route for interviews and surveys |
| Vendor due diligence | Collect direct enquiry addresses for partners you are evaluating |
| Event and community recruiting | Invite active partners to a webinar, roundtable or partner programme |
| Recruiting certified talent | Reach boutique consultancies whose listings advertise specific certifications |
Channel teams often widen the same motion with the Zapier App Directory Email Scraper and the Atlassian Marketplace Email Scraper, because integration vendors list across all three marketplaces. These are B2B partner contacts, not consumer prospects. Anchor your first line to the specific listing or cloud and the Salesforce AppExchange Email Scraper output behaves like a partner pipeline, not cold outbound.
Tuning the Salesforce AppExchange Email Scraper for better yield
Broaden customDomains early. Salesforce partners are companies, so corporate domains matter more here than in developer marketplaces.
Add your target domains directly — @acme.co.uk, consultingfirm.com — alongside the free-mailbox defaults, since many boutique consultancies still list a Gmail contact.
Keep expandQueries on. Google caps a single query at roughly 300 results, and query expansion is how the Salesforce AppExchange Email Scraper reaches past that ceiling.
Add ecosystem words to queryModifiers — partner, consultant, implementation, managed package, enquiries — to open fresh query surface.
Use countryCode and location aggressively here, because partner selection is regional. A
run with countryCode: "DE" and location: "Germany" returns a materially different partner
set from a US-weighted run.
Raise maxConcurrency on paid plans; resumable state means a migrated run resumes rather than
restarts. For technical listings, the [GitHub Email Scraper](https://apify.com/leads-
scraper/github-email-scraper) often enriches the same ISVs from their engineering side.
Expected results and honest limitations of the Salesforce AppExchange Email Scraper
- AppExchange listing URLs use opaque query-string ids, so most rows carry the partner email and listing name without a profile URL. Expect
username: nullandprofileUrl: ""on a large share of rows; the email and partner name are still there. - The Salesforce AppExchange Email Scraper only finds partners whose email is publicly visible in Google's index. Listings that route contact through a form will not appear.
- Google caps a single query at roughly 300 results. Query expansion mitigates that; it does not remove it.
usernameandprofileUrlare populated only when Google's result exposes an identifier. Rows without one still carryaccountNameandfullName— a Google limitation, not a bug.possiblyTruncated: truemeans Google's snippet ellipsis touched the address. Verify those rows.- The Actor requires the Apify GOOGLE_SERP proxy and cannot run without Apify proxy credentials.
- Free Apify plans are capped at 100 emails per run; paid plans are uncapped.
- Results vary with keywords, domains, country and location. No volume is guaranteed.
The Salesforce AppExchange Email Scraper is not affiliated with, endorsed by or supported by Salesforce. It reads public Google search results only.
Legal and ethical use of Salesforce AppExchange Email Scraper output
The Actor collects public data; how you contact people is your responsibility. A published partner enquiry address does not automatically create a lawful basis for bulk marketing under GDPR, CAN-SPAM or CASL — check yours before you send. Identify yourself, keep the message specific to the partner's listing, and honour opt-outs on first request.
FAQ about the Salesforce AppExchange Email Scraper
Why do so many Salesforce AppExchange Email Scraper rows have no profile URL?
Because AppExchange listing URLs use opaque query-string ids, so most rows carry the partner email and listing name without a profile URL. When Google does not print that id, username is null and profileUrl is empty. The email, partner name and description snippet are still populated.
Does the Salesforce AppExchange Email Scraper log into AppExchange or use the Salesforce API?
No. It never authenticates, never opens the marketplace and never uses a Salesforce API. It reads publicly indexed Google search results only.
Where do the emails the Salesforce AppExchange Email Scraper returns come from?
From the visible text of Google result blocks — titles, snippets and site labels — for pages on appexchange.salesforce.com.
Can the Salesforce AppExchange Email Scraper find consulting partners and ISVs in one run?
Yes. Put both kinds of terms in keywords — for example salesforce consulting partner and appexchange isv app. The keyword field on every row tells you which query produced the lead.
How many emails can one Salesforce AppExchange Email Scraper run return?
maxEmails accepts 1 to 10000. Free Apify plans stop at 100 emails per run; paid plans are uncapped. Real yield depends on your keywords and domain filter.
What does possiblyTruncated mean in Salesforce AppExchange Email Scraper output?
Google cut the snippet with an ellipsis right at the email, so the address may be incomplete. Treat those rows as needing verification before any send.
Can I schedule the Salesforce AppExchange Email Scraper?
Yes. Apify Schedules can re-run it on a cadence. Deduplication is per run, so diff each dataset against your CRM to catch newly listed appexchange ISV partner leads.
Can the Salesforce AppExchange Email Scraper target corporate domains?
Yes. Any domain goes into customDomains, with or without the @. Boundary-correct matching prevents false positives such as @gmail.company.
Do I need a proxy to run the Salesforce AppExchange Email Scraper?
Yes. It runs on the Apify GOOGLE_SERP proxy and will not work without Apify proxy credentials.
Is a Salesforce AppExchange Email Scraper run resumable?
Yes. State is persisted in the key-value store keyed by a hash of your input and saved on Apify's PERSIST_STATE, MIGRATING and ABORTING events.
Why did my Salesforce AppExchange Email Scraper run return fewer results than expected?
Usually a narrow domain filter or overly generic keywords. Broaden customDomains, add ecosystem terms to queryModifiers, and keep expandQueries enabled.
Are these consumer contacts?
No. They are ISV partners, consultancies and system integrators who published a contact address on a commercial listing. Frame outreach as partnership, not consumer prospecting.
How do I export Salesforce AppExchange Email Scraper results?
Through the standard Apify dataset export: JSON, CSV, Excel, XML or the Apify API.
Related Actors
| Actor | What it collects |
|---|---|
| Salesforce AppExchange Email and Phone Number Scraper | Emails and phone numbers from Salesforce AppExchange |
| Salesforce AppExchange Phone Number Scraper | Public phone numbers from Salesforce AppExchange |
| App Store Email Scraper | Public contact emails from App Store |
| Atlassian Marketplace Email Scraper | Public contact emails from Atlassian Marketplace |
| Bitbucket Email Scraper | Public contact emails from Bitbucket |
| Chrome Web Store Email Scraper | Public contact emails from Chrome Web Store |
| CodePen Email Scraper | Public contact emails from CodePen |
| Confluence Email Scraper | Public contact emails from Confluence |
| Dev.to Email Scraper | Public contact emails from DEV Community |
| Docker Hub Email Scraper | Public contact emails from Docker Hub |
| Figma Community Email Scraper | Public contact emails from Figma Community |
| Firefox Add-ons Email Scraper | Public contact emails from Firefox Add-ons |
| GitHub Email Scraper | Public contact emails from GitHub |
| GitLab Email Scraper | Public contact emails from GitLab |
| Google Play Email Scraper | Public contact emails from Google Play |
| Hashnode Email Scraper | Public contact emails from Hashnode |
| HubSpot Marketplace Email Scraper | Public contact emails from HubSpot Marketplace |
| Hugging Face Email Scraper | Public contact emails from Hugging Face |
| Jira Email Scraper | Public contact emails from Jira |
| Maven Central Email Scraper | Public contact emails from Maven Central |
| Microsoft AppSource Email Scraper | Public contact emails from Microsoft AppSource |
| Shopify App Store Email Scraper | Public contact emails from Shopify App Store |
| Slack App Directory Email Scraper | Public contact emails from Slack App Directory |
| SourceForge Email Scraper | Public contact emails from SourceForge |
| Stack Overflow Email Scraper | Public contact emails from Stack Overflow |
| Unity Asset Store Email Scraper | Public contact emails from Unity Asset Store |
| Unreal Engine Marketplace Email Scraper | Public contact emails from Unreal Engine Marketplace |
| WordPress Plugin Directory Email Scraper | Public contact emails from WordPress Plugin Directory |
| WordPress Theme Directory Email Scraper | Public contact emails from WordPress Theme Directory |
| Zapier App Directory Email Scraper | Public contact emails from Zapier App Directory |
| App Store Email and Phone Number Scraper | Emails and phone numbers from App Store |
| Atlassian Marketplace Email and Phone Number Scraper | Emails and phone numbers from Atlassian Marketplace |
| Bitbucket Email and Phone Number Scraper | Emails and phone numbers from Bitbucket |
| Chrome Web Store Email and Phone Number Scraper | Emails and phone numbers from Chrome Web Store |
| CodePen Email and Phone Number Scraper | Emails and phone numbers from CodePen |
| Confluence Email and Phone Number Scraper | Emails and phone numbers from Confluence |
| DEV Community Email and Phone Number Scraper | Emails and phone numbers from DEV Community |
| Docker Hub Email and Phone Number Scraper | Emails and phone numbers from Docker Hub |
| Figma Community Email and Phone Number Scraper | Emails and phone numbers from Figma Community |
| Firefox Add-ons Email and Phone Number Scraper | Emails and phone numbers from Firefox Add-ons |
| GitHub Email and Phone Number Scraper | Emails and phone numbers from GitHub |
| GitLab Email and Phone Number Scraper | Emails and phone numbers from GitLab |
Leave a review
If the Salesforce AppExchange 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 report or a custom build of the Salesforce AppExchange Email Scraper? Email neurodata.apify@gmail.com.