Building the target-company list for the mSDK v2 LinkedIn campaign: South African businesses with consumer apps that take in-app payments, assembled from public app-store data and uploaded as a Matched Audience. Method, results, and the shortlist to review, all here. It now also covers a second audience: the SA dev agencies who build these apps for other companies.
A company qualifies for mSDK ads if it has a consumer app that takes in-app payments. That's observable in the app stores, so we build the list from app-store and web data, then hand it to LinkedIn to match. Nothing scrapes LinkedIn; discovery happens entirely outside it.
Google Play + Apple charts across SA consumer categories, plus a by-name hunt for betting operators.
Group apps into companies; tier by install / rating scale (T1 big or cross-platform, T3 long tail).
Keep the South African companies: .za domains, then a homepage-signal pass to recover SA merchants on .com.
Drop banks, telcos, government and payment providers — not merchant prospects.
Human tick over the ambiguous .com recoveries (this page, section 05).
Resolve each company to its LinkedIn page URL (RapidAPI / Apify / spider.cloud).
Remove existing Peach customers via HubSpot before upload.
Company Matched Audience in Campaign Manager; wait 24-48h to match, verify size clears 300.
| Company | Website | Leads | Tier | Verticals |
|---|
Existing Peach merchants are an upsell audience for mSDK (they trust Peach; the mobile SDK is a new product to them), not budget waste — decide whether to run them as a separate expansion campaign. The rest are genuinely held back.
| Include? | Company | Website | Peach merchant name | Tier |
|---|
| Include? | Company | Domain | Reason |
|---|
| Include? | Company | Domain | Tier |
|---|
Beyond the ad audience, we built an index of the senior decision-makers at these companies — the people an outreach motion would target. Pulled free from Sales Navigator (names, titles, photos), then a small, credit-conscious test of paid email enrichment to prove it works before the marketing team commits.
FullEnrich resolves a name + company into a verified work email. We enriched the highest-value decision-makers across free trial accounts. Emails render in full for signed-in Peach staff. Status: DELIVERABLE and HIGH PROBABILITY are confident; CATCH ALL means the domain accepts any address (less certain).
| Decision-maker | Role | Company | Verified email | Confidence |
|---|
SA software and app-development agencies — the Polymorphs of the world, who built Refreshi for a client rather than for themselves — ship apps for many companies at once. One relationship with an agency like this can put mSDK in front of a whole portfolio of future apps, not just one. Found via directories and search, deduped, existing Peach customers excluded, then LinkedIn-enriched and run through the same persona pull (photo, title, email, LinkedIn) as the people index above.
| Agency | City | Decision-makers | Evidence |
|---|
Google Play + Apple + homepage checks, plus Google AI-overview (DataForSEO) for brand→parent. No LinkedIn touched.
Apify anchor, spider.cloud — public LinkedIn pages, no login. Rarely needed now.
RapidAPI Fresh LinkedIn — vendor absorbs the scraping; name → company URL.
Sales Navigator in ego-lite, read-only, human-paced. Now the people index, company search and public /in resolution. Strict back-off on any 429.
Handing our session to datacenter scrapers. LinkedIn's classic ban trigger. Never.
| Tool | Job | Cost model | Status | Running cost/mo |
|---|---|---|---|---|
| Sales Navigator (ego-lite) | People index, company search & public /in resolution — the core engine | Subscription | Active | ~$99 |
| FullEnrich | Decision-maker work emails (pay per verified hit) | Plan / PAYG | Active | $55 (Pro, 1k credits) |
| DataForSEO — Google AI Mode | Long-tail brand→parent + people from Google AI overview | Prepaid PAYG | Active | ~$5 ($0.004/call) |
| google-play-scraper | SA Play charts + developer site + installs | Free | Active | $0 |
| Apple RSS + iTunes | SA App Store charts + seller site | Free | Active | $0 |
| PIP Supabase | Active-trading Peach-customer exclusion (internal) | Internal | Active | $0 |
| RapidAPI Fresh LinkedIn | Domain → LinkedIn company (fallback) | Subscription | Fallback | $10 |
| spider.cloud | Bulk company-page fetch (fallback) | Prepaid PAYG | Fallback | ~$5 |
| Apify anchor actor | Company name → LinkedIn page (fallback) | Free tier | Fallback | $0 |
| SerpAPI | Was /in resolution — replaced by Sales Nav flagshipProfileUrl (free) | Subscription | Dropped | $0 |
| 42matters / Similarweb | App-SDK intelligence | Enterprise | Dropped — sales-gated | $0 |
| Total (tools we keep) | Core stack ~$159; +$15 optional fallbacks | ~$174 |
node discover-playstore.mjs + discover-playstore-delta.mjs + discover-apple.mjs → raw JSON per store.
node merge-and-tier.mjs → dedupes to companies, tiers, flags non-merchants and global giants → companies.csv.
node recover-sa-dotcom.mjs then refine-recovered.mjs → homepage + contact-signal checks → sa-recovered.json (the review set on this page).
enrich-linkedin.mjs (RapidAPI domain lookup) then finalize-enrich.mjs (SerpAPI fallback + flag non-merchants) → matched-audience-upload.csv.
182 assembled → LinkedIn URLs resolved, bad SerpAPI matches removed, and only actively-trading Peach merchants excluded (Lightdash volume, last 30 days; 14 dormant past-merchants flowed back in). 130 clean acquisition targets in matched-audience-upload.csv (19 added from the reviewed wrong-match list, LinkedIn pages re-resolved).
A second target audience built and enriched: 105 South African software / app-development agencies (like Polymorph, who built Refreshi), 101 with a LinkedIn company page, plus 131 decision-makers (founders, CTOs, heads of engineering) enriched with photo, title, LinkedIn and email. See the "Dev agencies" section above. One agency builds apps for many clients, so it is a high-leverage segment for the mSDK. It's now live: the company Matched Audience finished matching to ~1,500+ members, and two dedicated ad sets — a single-image and a carousel, both on the "build once, ship everywhere" angle — are serving against it, with direct outreach to the 89 verified emails as the warmest next step.
Run actively-trading Peach merchants as a separate mSDK upsell campaign, or leave them out. Tick any to add back and export in section 05.
Company Matched Audience in Campaign Manager; wait 24-48h, verify size clears 300, attach to C1/C2.
Competitor-signal passes (website payment-gateway detection; DIY APK SDK grep) — documented, for a future session.