Collector
Instagram Profiles scraper
The full header behind any public account — bio, follower and post counts, verification, business category and the link in the bio — and, when you ask for it, the email address off the site that link points at.
On this page
What it collects
The full header behind any public account — bio, follower and post counts, verification, business category and the link in the bio — and, when you ask for it, the email address off the site that link points at. It is a scraper, which means the whole contract is: fill in the form, and one table comes back. No browser window opens, it costs none of your plan's automation slots, and the requests go out over plain HTTP carrying a real browser's TLS fingerprint.
Instagram no longer answers a signed-out request for a profile’s bio, follower counts or bio link — it returns a stub. This card needs an account of its own to read them. Everything else in Argus still collects signed out.
At volume this target is sensitive to where the request leaves from, so pick a proxy on the run — it is advice at the form rather than a gate, and a run without one still starts. Whichever way it went, every row records it — see the provenance columns below.
What you give it — 2
The form the app draws, read out of the card itself. Each hint below is the one shown beside that field in the run dialog, so nothing here is a description of the product written separately from it.
The one answer it needs
- usernames
- Accounts · list · required
One account at a time, in whatever form you have it — nasa, @nasa, the profile URL, the share-sheet link, a story link, or the numeric id. The @, the query string and the /reels/ on the end are all stripped for you. A link to a POST or a hashtag is not an account and will be refused rather than guessed at.
Everything else is optional
- scrapeContacts
- Find email addresses · boolean
Opens the website in each bio looking for an address, a named contact and social links. Accounts with no link in the bio are skipped. This is the slow half — about two minutes per hundred.
What comes back — 34 columns
One dataset per run — a typed table your workspace owns, which you can then sort, filter, edit in the grid, export whole, or read back over the local API. These are the columns it is created with.
5 columns are marked may be empty. That is a fact about the record rather than about the collector — a post with nowhere tagged, an account with no business category — and it is said out loud so a blank cell does not read as a broken scraper. A column the reply never carries at all is deleted upstream rather than shipped empty, so nothing here is decoration.
18 from Instagram Profiles
| Key | Column | Type |
|---|---|---|
| username | Username | text |
| fullName | Name | text |
| biography | Bio | longText |
| followersCount | Followers | number |
| followsCount | Following | number |
| postsCount | Posts | number |
| verified | Verified | select |
| private | Private | select |
| isBusinessAccount | Business account | select |
| businessCategoryName | Business categorymay be empty | text |
| website | Websitemay be empty | url |
| publicEmail | Public emailmay be empty | |
| publicPhone | Public phonemay be empty | text |
| url | Profile | url |
| igtvVideoCount | Videosmay be empty | number |
| profilePicUrl | Profile picture | url |
| ownerId | Account ID | text |
| searchTerm | Found via | text |
12 from the enrichment pass
Opt in and the run makes one extra request per row: it visits the site in the website column looking for an address, a named contact and social links. That is the step that turns a listing into a lead, and it is what the run is mostly spending its time on when you ask for it.
| Key | Column | Type |
|---|---|---|
| contact_email | Direct email | |
| contact_name | Contact | text |
| contact_role | Role | text |
| emails | All emails | longText |
| contact_source_url | Found on | url |
| url | ||
| url | ||
| url | ||
| X / Twitter | url | |
| youtube | YouTube | url |
| tiktok | TikTok | url |
4 that every scraper writes
The same four on every card, so a table can still answer months later how its rows got there: which service they came from, when, which profile's identity the requests carried, and whether that identity was signed in.
| Key | Column | Type |
|---|---|---|
| platform | Platform | text |
| collected_at | Collected at | datetime |
| profile | Collected by | profile |
| logged_in | Signed in | select |
Four ways to run it
The Scrapers tab. Pick the card, fill in the form, press Start. Every run started here makes a new table, named after what you searched for and when. Check first if you like — it collects one page, writes nothing, and reports which columns came back filled.
Ask the assistant. It has the whole catalogue, so this card is a sentence rather than a form. It fills in the parameters above from what you said and shows you them before it starts.
Over MCP or the local API. The same card, from a coding agent — argus_run_scraper over the MCP server, or POST http://127.0.0.1:39219/v1/scrapers/run on the local API. There is a sample call beside it that writes nothing.
{
"kind": "instagram_profiles",
"inputs": {
"usernames": [
"…"
]
}
}As a step inside a workflow. The Run scraper step puts this collector in the middle of an automation — collect, then filter, then mail — and the tree still opens no window doing it. It is also the one caller that can overrule the table-per-run rule: pointed at a table you name, it creates that table with the columns above if it is missing and files every run into it after, appending or updating the row in place on a column you match on. The step hands the next one the table's name, its id and the row count.
Where it stops
It will not drive a page. Anything that needs a real browser — a site with no list endpoint behind it, or anything operating an account of your own — is an automation instead, and that is a different tool rather than a worse version of this one.
Even signed in, no browser window opens to collect. One opens once, by hand, so you can log in; every request after that is the same plain HTTP every other card makes. Use a throwaway account — automated collection is against these sites' terms and the account carrying it can be disabled.
The rest of the Instagram cards
One card per job rather than per service — profiles, posts and the people around them are three collections with three schemas.