Instagram Search API and MCP — Find Profiles and Places by Keyword
Send a keyword and this source searches Instagram for matching profiles — with followers, bio, links and business flags — or, with search_type set to place, for locations with their address, coordinates and top posts.
- You send
- A keyword and an optional search type (profiles by default, or place)
- You get back
- Matching profiles with followers, bio and links, or places with address and coordinates
- Coverage
- Public Instagram profiles and places that Instagram's search returns.
- Price
- 5 points per returned result, up to 250 per request — $5 per 1,000
- Billed per result actually returned, capped by max_items. A search that matches nothing costs nothing.
Ways to get this data
Three approaches teams use today, and where each one runs into trouble.
| Approach | What it takes | Cost | Trade-off |
|---|---|---|---|
| Searching in the app | Type a term and tap through results | Free, and slow | No export, no counts side by side |
| An influencer database | A subscription and filters | Monthly or annual contract | Limited to the creators the vendor indexed |
| NeuralVerge | One request per keyword | $5 per 1,000, misses not billed | Matches on Instagram's own search, which favours names and handles over topics |
What you get back
Every field in the example response below.
| Field | Type | Description |
|---|---|---|
query | string | The keyword searched. |
search_type | string | profile or place. |
total_items | number | How many results came back. |
items[].result_type | string | profile or place. |
items[].username | string | Account handle, for profiles. |
items[].full_name | string | Display name, for profiles. |
items[].biography | string | Bio text, for profiles. |
items[].external_urls | array | Links in the bio. |
items[].followers_count | number | Followers at read time. |
items[].is_verified | boolean | Whether the account is verified. |
items[].is_business_account | boolean | Whether it is a business account. |
items[].latest_posts | array | Recent posts, where returned. |
Example response
A real response, as returned.
{
"session_id": "178c72fb-d855-4ffb-9f6e-21908053e76e",
"kind": "instagram_search",
"query": "coffee shop",
"search_type": "profile",
"max_items": 1,
"partial": false,
"machine": {
"total_items": 1,
"items": [
{
"result_type": "profile",
"id": "74672878015",
"username": "avshop.coffee",
"full_name": "avshop.coffee",
"url": "https://www.instagram.com/avshop.coffee",
"biography": "☕️ Истинско кафе изживяване от най-добрите плантации в света 🌏 Поръчай онлайн 📦",
"external_url": "https://www.avshop.bg/",
"external_urls": [{ "title": null, "url": "https://www.avshop.bg/" }],
"followers_count": 92,
"follows_count": 0,
"is_verified": false,
"is_private": false,
"is_business_account": true,
"business_category": null,
"related_profiles": [],
"latest_posts": []
}
],
"errors": []
},
"total_points": 5
}How to run it
The same lookup works from the app, the API, or as a tool an agent can call mid-task.
This endpoint is synchronous: the call blocks until the lookup completes and returns the records directly. If a lookup hits its time budget before finishing, the response comes back with partial: true and whatever it collected so far — re-run with a smaller max_items for a complete result. query is required. Optional: search_type (leave it out for profiles, or set place for locations), max_items (1-250, default 10).
curl -X POST https://api.neuralverge.ai/functions/v1/run-instagram-search \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{ "query": "coffee shop", "max_items": 10 }'What teams use it for
Where this field shows up in an actual workflow.
Find businesses whose Instagram is their main storefront.
Find accounts in a niche, then vet them with Instagram profile.
Search places to see how a venue or area shows up on Instagram.
Let an agent find the right account before it reads posts or reels.
Coverage, freshness and limits
What this source covers, how fresh it is, and where it stops.
Public Instagram profiles and places that Instagram's search returns.
Read at request time.
This source returns content an account published publicly, stamped with the URL it was read from and a session id you can trace. Accounts can belong to individuals as well as brands — use it for legitimate business purposes under your own lawful basis and check the acceptable use policy.
- —Search is global and loosely ranked — the sample above returns a Bulgarian coffee shop for 'coffee shop'. Filter by bio, links or follower count downstream.
- —Profile search matches names and handles more than topics.
- —Results are capped at 250 per request.
Questions, answered
Yes — every Data Source endpoint, including this one, is synchronous: the lookup runs inside the request and the result comes back in the same response, no polling. If a lookup hits its time budget before finishing, the response comes back with partial: true and whatever records it collected so far — re-run with a smaller max_items to get a complete result instead of a partial one.
Related sources
Try instagram search on your own data
One request format across every source in the catalog.