# Scrape the posts under an Instagram hashtag without running a scraper

Name a hashtag and how many posts you want. RouterGrowth fetches the public Instagram posts under it and returns them as records: caption, date, likes, replies, post URL and author. No browser to keep alive, no proxy pool, no login to burn, and no code to fix when Instagram changes its pages.

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

## The call

[`social.search`](https://www.routergrowth.com/catalog/social.search): Public posts matching a keyword on X, LinkedIn, Reddit, YouTube, TikTok, Instagram or Facebook: brand mentions, category conversations, competitor chatter.

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 6.5 s for $0.020125. Personal fields are masked. Five posts tagged #plantbasedrecipes, all published the morning of the run: a supermarket promotion, a brand recipe and a meal delivery menu.

| created_at | text | likes | replies |
|---|---|---|---|
| 2026-10-19 | 🚨 50c OFF BEYOND MINCE! 🚨 That’s your sign to try something delicious! 👀 Turn Beyond Mince into these golden, crispy empanadas: packed with… | 0 | 0 |
| 2026-10-19 | Vegan Cheesy Herb Crackers 🧀 Your new favourite snack! Crispy, herby and full of cheesy flavour, made with our Nutritional Yeast and Extra… | 3 | 1 |
| 2026-10-19 | On our menu for delivery 28-31 Oct: red curry noodle soup with tofu and Thai basil (high protein, no added gluten). An easy, Thai-inspired… | 4 | 1 |

## How to do it

1. **Connect once.** Add RouterGrowth to Claude, Cursor or Claude Code. There is nothing to install for the scraping itself.
2. **Give a hashtag.** On Instagram, social.search searches hashtags, so pass the tag (with or without #) and a limit.
3. **Let the router handle the fetch.** Providers, retries and blocks are handled on the RouterGrowth side. A failed provider falls back to the next one under your max_cost.
4. **Keep the accounts that matter.** Pass the authors you want to social.profile for followers, bio and website, or to social.posts for their own feed.

## Ask it like this

- Scrape 30 posts under #plantbasedrecipes and list the brand accounts among the authors. (`social.search`)
- Find who posts under #veganmealprep this week and give me the followers and website of the ten most active accounts. (`social.search`, `social.profile`)

## 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.search -i '{"platform": "instagram", "query": "#plantbasedrecipes", "limit": 5}'
```

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

## Worth knowing

- **Hashtags, not keywords.** Instagram search here is by hashtag. A phrase with spaces is not a caption search; use one tag per call.
- **Recent posts first.** This run returned posts from the same morning. For a tag's older posts, raise the limit and filter by created_at.
- **Nothing to maintain.** There is no scraper code on your side. When Instagram changes, the provider side changes, and the record fields stay the same.

## Questions

### Do I need proxies or an Instagram login?

No. The fetch runs on RouterGrowth's providers. You never hand over an Instagram account to scrape with.

### Can it search captions for a keyword?

On Instagram the query is matched as a hashtag. For a phrase, pick the hashtag people use for it.

### What does each post include?

Post URL, caption text, created_at, author, likes, replies and an is_video flag.

### Will it get blocked?

Blocks are handled by the providers and the router's fallback. A run that ends without results is not charged.

## Related

- [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)
- [Read any public Instagram brand feed through one REST or MCP call](https://www.routergrowth.com/tools/instagram/api.md)
