# Read any public Instagram brand feed through one REST or MCP call

Send a public Instagram handle and a limit. RouterGrowth returns the account's recent posts as JSON records: post URL, caption, date, likes, replies, views on videos and an is_video flag. One RouterGrowth key covers it, with no Meta app review and no access token to refresh.

HTML page: https://www.routergrowth.com/tools/instagram/api
Part of: [Instagram tools](https://www.routergrowth.com/tools/instagram.md)

## The call

[`social.posts`](https://www.routergrowth.com/catalog/social.posts): Recent public posts for a social handle.

Price on this network: $0.004025 per post, $0.002 minimum a call. The exact quote is shown before every run.

## What a real run returned

Run on 2026-10-19: 5 records in 13.9 s for $0.020125. Personal fields are masked. Five recent posts from the public Allbirds account. Likes came back as -1 on this feed, so the rows show replies and views, which were filled.

| created_at | text | replies | views | is_video |
|---|---|---|---|---|
| 2026-05-12 | Retro style meets modern comfort in our new Varsity Jersey 👟 | 55 | 5499 | True |
| 2026-05-05 | Meet the Varsity Jersey: Cloud-like comfort to take you wherever the day goes. | 7 | 5633 | True |
| 2026-05-07 | Your favorite shoes just dropped in stripes! Same comfort, bigger statement 💁‍♀️ | 3 | 3989 | True |

## How to do it

1. **Get one RouterGrowth key.** Mint a key in the dashboard, or connect the MCP server to Claude, Cursor or Claude Code. The same key reaches every capability.
2. **Send the handle.** POST to /v1/run with capability social.posts, platform instagram, the handle and a limit. The response carries a run_id, the billing block and the posts.
3. **Read the records.** Each post has an id, url, text, created_at, author and an engagement object with likes, replies and views, plus is_video.
4. **Chain the next call.** Pass a post URL to social.comments for the thread under it, or the handle to social.profile for followers, bio and links.

## Ask it like this

- Pull the last 10 posts from these five DTC brands on Instagram and rank them by replies. (`social.posts`)
- For each of these handles, give me followers, the bio link and their three most recent captions. (`social.profile`, `social.posts`)

## Connect

MCP server: `https://api.routergrowth.com/mcp`

```bash
claude mcp add --transport http routergrowth https://api.routergrowth.com/mcp
```

```bash
npm install -g routergrowth && routergrowth setup
routergrowth run -c social.posts -i '{"platform": "instagram", "handle": "allbirds", "limit": 5}'
```

```bash
curl -X POST https://api.routergrowth.com/v1/run \
  -H "Authorization: Bearer $ROUTERGROWTH_API_KEY" \
  -d '{"capability": "social.posts", "input": {"platform": "instagram", "handle": "allbirds", "limit": 5}}'
```

## Worth knowing

- **Not Meta's API.** RouterGrowth is independent of Meta. It reads what a public profile shows; it does not use the Instagram Graph API or any business login of the account.
- **Public posts only.** Private accounts and stories are out of reach. The call returns posts from the public feed; pinned posts can come back ahead of newer ones, so sort on created_at.
- **Read-only.** social.posts never likes, follows, comments or publishes. Nothing happens on the account you read.

## Questions

### Is this the official Instagram API?

No. It is an independent API that returns public Instagram posts. You do not apply for Meta permissions or connect the brand's account.

### What format does the response use?

JSON. A run object with run_id, status and billing, and a result with a posts array; each post keeps the same field names on every platform social.posts serves.

### Why are likes -1 on some posts?

Some accounts hide like counts. In the Allbirds run the like field came back as -1 while replies and views were filled, so read it as unavailable, not as a number.

### Can it read stories or private profiles?

No. Only posts a logged-out visitor can see on the public feed.

## Related

- [Scrape the posts under an Instagram hashtag without running a scraper](https://www.routergrowth.com/tools/instagram/scraper.md)
- [Scrape a brand's Instagram profile into one clean record](https://www.routergrowth.com/tools/instagram/profile-scraper.md)
- [Scrape a brand's Instagram posts with captions and engagement, no setup](https://www.routergrowth.com/tools/instagram/posts-scraper.md)
- [Scrape the comments under a brand's Instagram post](https://www.routergrowth.com/tools/instagram/comment-scraper.md)
- [What reading Instagram posts costs: a quote before, a charge per post after](https://www.routergrowth.com/tools/instagram/api-costs.md)
- [Call Instagram post data from a Python script with requests](https://www.routergrowth.com/tools/instagram/api-python.md)
