How to build a competitor conquest list from Instagram: the agency playbook (2026)
How growth agencies extract, filter, and deliver a cold email list from a client's competitor followers on Instagram — the full workflow from target selection to send-ready CSV.
There is one question that comes up on almost every discovery call with a growth agency: can you pull leads from our client’s competitors? The answer is yes — and for most agencies, the competitor conquest list is the single highest‑converting deliverable they can offer a new client, because the targeting is already done. The competitor’s audience has self‑selected. They follow that account because they care about the category. Your client just needs to be the better offer landing in the same inbox.
This post walks through the full workflow: how to identify the right competitor accounts to target, how to extract their engaged followers at scale without logging into anything, how to filter the raw data down to a send‑ready list, and how to structure the output so the client’s sales team actually uses it. It is the same process we run at Scraphex for agencies. There are no shortcuts in it, but every step is intentional.
Why competitor followers are the highest‑quality cold audience on Instagram
Most Instagram lead generation starts from the wrong place. Agencies either pull follower lists from broad hashtags (too noisy) or try to scrape lookalike audiences based on influencers (useful but slow to filter). Competitor followers skip both of those problems.
When someone follows a competitor’s Instagram account, they have done three things voluntarily: they have found an account in your client’s category, decided it was relevant to their needs, and chosen to stay in contact with it. That is a stronger signal than someone who liked a hashtag post once. It is also far cheaper to act on than a paid lookalike audience, because there is no bidding, no CPM, and no dependence on an algorithm.
The catch is that raw follower lists are still messy. Not every follower is a decision‑maker, a potential buyer, or even a real business. A typical competitor follower list for a mid‑sized B2B brand contains roughly:
- 30–40% fake, inactive, or private accounts with no reachable contact
- 15–25% consumer accounts with no B2B relevance to the client’s offer
- 10–20% other businesses in adjacent categories — agencies, suppliers, press — who are watching the competitor, not buying from them
- 15–30% genuine potential prospects: operators, founders, or buyers who match the client’s ICP
That last bucket is the list. Everything else is noise that, if left in, dilutes reply rate and wastes sender reputation. The entire value of the workflow described here is moving that 15–30% to the front of the file and discarding the rest before anyone sends anything.
Step 1 — Target selection: picking the right competitors to mine
Not all competitor accounts are equally useful. Before pulling a single follower record, the first job is deciding which three to five accounts to target and why.
The accounts that produce the best lists share a few properties:
They are in the same commercial category, not just the same topic. A DTC skincare brand’s followers and a skincare blogger’s followers look similar on the surface, but the latter skews heavily toward consumers and aspiring influencers. You want accounts selling the same thing your client sells — not accounts talking about the same thing.
They have between 5,000 and 500,000 followers. Below 5k, the audience is too thin to produce a useful sample. Above 500k, the follower list becomes a mixed bag of global consumers, press, and curiosity traffic that is expensive to filter and rarely produces high-quality B2B prospects. The sweet spot in most niches is 20k–150k.
Their engagement is real. A competitor with 80k followers and five comments per post has a bought or ghost audience. Their follower list is almost entirely fake. Check the last twenty posts: if comments are generic (“great post!”, emoji-only), run. If comments are specific, named people asking real questions, that is a list worth pulling.
Their audience geography matches the client’s market. If your client operates in Spain and the competitor is Australia-based with 90% of their engagement in English from US accounts, that is not the right target. Use the competitor’s bio, posting language, and comment geography as a rough signal.
Once you have the three to five target accounts, document them before extraction begins — because if you need to re-run or add a competitor later, the list of sources is what lets you trace each prospect back to where it came from.
Step 2 — Extraction: what is pulled and how
The extraction layer covers two data types: the follower list itself, and the public profile data for each follower.
For each target competitor account, what is available publicly without logging in includes the list of accounts that follow them, subject to pagination. For each account in that list, the public profile exposes: username, display name, bio text, business contact email (if the account is in business or creator mode and has chosen to display one), profile link (the external URL), follower count, following count, post count, whether the account is private, and the business category if set.
That is the raw material. The extraction runs at a rate that respects Instagram’s public serving capacity — not so fast that it triggers degraded responses, not so slow that a list of 100k followers takes a week. In practice, a competitor account with 80k followers produces about 30–40k visible profile records in a single run, because Instagram’s public pagination does not always surface the full follower graph for large accounts.
One important note on architecture: extraction and enrichment are separate. The extraction job produces a thin record — username, raw bio, contact fields if any, URL. Enrichment — inferring whether the bio link resolves to a real business domain, guessing the email format, estimating company size from follower count — is a second pass. This separation matters because enrichment is where errors compound. If you mix it with collection, you cannot re-run enrichment without re-hitting Instagram.
For the technical detail of how logged-out extraction works in 2026 — why it is more reliable than session-based scraping, how rate handling works, what schema changes to watch for — the extraction architecture post covers it in full.
Step 3 — Filtering: where the list quality is actually made
This is the step most agencies skip or do badly, and it is the step that determines whether the client’s SDRs reply-rate is 2% or 12%.
The filters, applied in order:
Private and dormant accounts out. Any account with private: true has no reachable public contact data. Any account with zero posts in the last three months is almost certainly inactive. Both go into the discard pile immediately.
Minimum follower threshold. For most B2B niches, accounts with fewer than 300 followers are either very new or not commercially active. Set the floor based on the client’s ICP — a software agency might care about brands with fewer followers than a D2C accessories brand would.
Contact availability. Every row that survives must have at least one of: a business contact email from the profile, an email address visible in the bio text (pattern-matched), or a linked domain that resolves and has a contact page with a discoverable email. Rows with none of these three are out. They have no usable contact.
Role-based email filtering. Generic inboxes (info@, hello@, contact@, noreply@) are rarely read by decision-makers. If the only contact available is role-based and the business has no named owner in the bio, flag the row rather than discarding — it may still be usable for a high-volume top-of-funnel campaign, but it should not be in the core list.
Relevance filter: bio keywords and category. Run the bio text through a keyword match against the client’s ICP. If the client is selling to e-commerce apparel brands, bio keywords like “fashion”, “clothing”, “boutique”, “DTC”, “brand owner”, “founder”, “CEO” score high. Keywords like “fitness influencer”, “personal trainer”, or “wedding photographer” score low. Instagram’s business category field helps here too — if set, it gives you a clean taxonomy without any inference.
Geography filter. If the client’s offer is Spain-only or EU-only, use the bio language, the bio text mentions of location, and any phone number country code to estimate geography. This is imperfect but cuts a global list by 60–70% and dramatically improves relevance.
After filtering, a raw 30,000-row extract for a single competitor typically yields 800–2,500 genuinely usable rows. That range is what agencies should communicate to clients upfront — the value is in the quality of those rows, not the size of the original pull.
Step 4 — Enrichment: adding the context that lifts reply rate
Raw filtered data tells you who to contact. Enrichment tells you why, which is what gets the email opened.
For each surviving row, enrichment adds:
Source competitor. Which of the three to five target accounts produced this prospect. This is critical: the outreach angle for a follower of Competitor A is different from the angle for a follower of Competitor B, because they chose to follow different accounts for different reasons.
Business type inference. Agency, DTC brand, creator, B2B SaaS, local business, or other. This drives message personalisation and lets the client route different rows to different sequences.
Estimated company size. For most Instagram-native businesses, follower count is a reasonable proxy. A 10k-follower DTC brand is very different from a 200k-follower one in terms of budget and buying cycle.
Notes field. One or two sentences about why this row is in the file. “Founder of Spanish skincare DTC brand with 45k followers, followed Competitor X, bio links to boutique.es, email in profile” is the sentence that turns a row into a conversation starter. This field is the highest-ROI addition to any export.
Agencies who skip enrichment because it is manual work consistently report lower reply rates than agencies who maintain it. The notes field in particular is where a skilled SDR turns a cold email into something that feels researched.
Step 5 — Output format and delivery
The deliverable is a single CSV (plus Excel copy) with one row per prospect. Columns:
| Column | Purpose |
|---|---|
username | Manual verification and personalisation |
full_name | First-line personalisation |
email | Action target |
source_competitor | Which account produced this row — drives angle |
business_type | Segmentation for sequence routing |
followers | Size signal |
country_guess | Jurisdiction and message language |
bio_snippet | Raw material for personalisation |
notes | Human-readable qualification sentence |
profile_url | For manual verification before sending |
For agency clients, the delivery format matters as much as the data. A file that arrives sorted by source_competitor then business_type lets the client immediately route rows to the right sequence without any additional processing. This is a detail most data vendors miss, and it is why agencies who receive data this way rarely go back to raw exports.
How to refresh the list on a recurring basis
A one-time competitor conquest list has a half-life. Competitor follower bases change. Accounts go private, go dormant, or become more active. New accounts enter the niche.
The sustainable version of this workflow is a monthly refresh that pulls the incremental delta — new followers who appeared since the last run — and appends them to the suppression-list-cleaned master. This requires tracking which accounts were seen in the prior run, but adds very little to the technical overhead and keeps the client’s pipeline from running cold after the first campaign.
Monthly refreshes also let you track signals over time: accounts that went from personal to business mode, accounts whose follower counts crossed a threshold, accounts that changed their bio to include a new keyword. These transitions often indicate the right moment to reach out — a brand that just activated business contact fields is more likely to be in a commercial growth phase than one that set them up two years ago.
Compliance note for EU recipients
Competitor follower conquest lists almost always include EU-based accounts. Before any of these contacts are emailed into the EU, the campaign needs a legitimate interest basis with a written balancing test, a privacy notice accessible from every email, and a working cross-campaign suppression list.
The full compliance framework — the LIA, the documentation checklist, the country-level nuances for Spain, France, and the UK — is in the companion post on GDPR and cold emailing Instagram leads. The short version: the targeting described here (business contacts, publicly displayed emails, relevant outreach) is defensible under GDPR if the paperwork is in place before the first send.
What this looks like in practice
An agency serving a B2B SaaS client in the HR software space runs this workflow against five competitors with follower counts between 20k and 180k. The raw pull produces 85,000 follower records. After filtering (private, dormant, no contact, geography, relevance), the working list is 2,200 rows. After enrichment with business type, notes, and source competitor, the final deliverable is 1,800 rows in two segments — HR directors of mid-market companies in Spain and France, and founders of fast-growing startups with fewer than 200 employees.
The first campaign on that list, three sequences of four emails each with a fifteen-day gap between sequences, produces a 4.8% reply rate and eleven booked demos in the first month. That is not unusual when the filtering and enrichment are done correctly.
The same client running from a generic “HR professionals” hashtag list on the same tools would have seen a 0.9% reply rate, because the targeting is generic and the signal-to-noise ratio in the data is much lower.
If you want this done for your agency or client
The workflow above is exactly what Scraphex runs for agency clients. We handle the competitor identification, the logged-out extraction, the multi-pass filtering, the enrichment, and the delivery in the format above — in 24–48 hours per campaign, with no account to maintain and no extraction stack to own.
If you want to see what a conquest list looks like for a specific competitor in your client’s niche, request a free sample. We will pull and filter 50 rows from a competitor of your choice and deliver them with the full column set. It is the fastest way to evaluate whether the channel is worth running at scale.