> **For coding agents and LLMs:** This is one Social Fetch marketing page (markdown export). For API orientation start with [`/llms.txt`](https://www.socialfetch.dev/llms.txt); for auth and crawl rules use [`/agents.txt`](https://www.socialfetch.dev/agents.txt); for every operation use [`/llms-endpoints.txt`](https://www.socialfetch.dev/llms-endpoints.txt).

## This page

- **On-site (HTML):** <https://www.socialfetch.dev/platforms/instagram/v2-instagram-profiles-search>
- **Markdown (.mdx) URL:** <https://www.socialfetch.dev/platforms/instagram/v2-instagram-profiles-search.mdx>

---

# Instagram profile search API

Find Instagram accounts by name or keyword and page through the matches — id, handle, display name, avatar, verified and private flags in structured JSON.

`GET /v2/instagram/profiles/search` takes a required `query` string and an optional `cursor`, and returns the accounts Instagram's own account search matches, in Instagram's ranking, in the shared Social Fetch envelope (`meta.version` is `v2`). Read `data.accounts` and `data.page`. Each account is the same profile summary every v2 endpoint uses: `id`, `handle`, `displayName`, `avatarUrl`, `verified` and `privateAccount`, always present and `null` when Instagram doesn't say. A search hit carries no bio and no counts: pass a hit's `handle` or `id` to `GET /v2/instagram/profiles/{profile}` for those.

When `data.page.hasMore` is true, pass `data.page.nextCursor` as `cursor` and keep the same `query`. Instagram re-serves its top accounts on later pages, so an account you already received isn't repeated, and a page can be shorter than the one before it. An empty `data.accounts` means nothing matched. Each page is billed once; read `meta.creditsCharged`. The account whose handle is `search` is `GET /v2/instagram/profiles/@search`, because `/profiles/search` is this route.

## Request

- **Endpoint:** `GET /v2/instagram/profiles/search`
- **Credits:** 1 credit
Failed requests are free
- **Input:** by query
- **Full reference:** [docs](https://www.socialfetch.dev/docs/api/v2/instagram/profiles/search/get)
- **Platform page:** [/platforms/instagram](https://www.socialfetch.dev/platforms/instagram)

## FAQ

### How do I search Instagram accounts by keyword via API?

Call `GET /v2/instagram/profiles/search` with your Social Fetch API key (`x-api-key`) and a required `query`. Read `data.accounts`, and keep following `data.page.nextCursor` with the same `query` while `data.page.hasMore` is true. See the API docs for parameters and examples.

### How much does Instagram profile search cost?

Pricing is documented on the operation in the API registry (shown on this page). Confirm on every response with meta.creditsCharged — that field is the billing source of truth. Each paginated page is a separate billed request.

### What does a search result contain?

The profile summary: `id`, `handle`, `displayName`, `avatarUrl`, `verified` and `privateAccount`. Search results carry no bio and no follower counts. Look a hit up with `GET /v2/instagram/profiles/{profile}` to get them.

### Why can a later page be short, or end early?

Instagram repeats its strongest matches on every page, so accounts you already received are dropped and a later page can hold fewer accounts. When a page brings nothing new the search ends: `hasMore` is false and `nextCursor` is `null`.

### How do I look up the account named search?

`/v2/instagram/profiles/search` is the search route, so write the handle with an `@`: `GET /v2/instagram/profiles/@search`.
