Instagram Keyword Search Scraper
Pricing
Pay per event + usage
Instagram Keyword Search Scraper
Discover public Instagram posts, Reels, and associated accounts from general keywords, with captions, engagement, media, and source-query metadata.
Pricing
Pay per event + usage
Rating
0.0
(0)
Developer
Stas Persiianenko
Maintained by CommunityActor stats
0
Bookmarked
10
Total users
6
Monthly active users
12 days ago
Last modified
Categories
Share
Discover public Instagram posts, Reels, and associated accounts from general keywords. Instagram Keyword Search Scraper turns phrases such as specialty coffee, home coffee roasting, or latte art into typed records with captions, public engagement, creator identity, media links, and source-query metadata.
The Actor is designed for repeatable trend research, creator discovery, content ideation, and public-market monitoring. It does not require an Instagram login or ask users for account cookies.
What does this Instagram keyword search Actor do?
For every keyword, the Actor:
- Resolves the phrase to relevant public Instagram hashtag topics.
- Selects the highest-volume related topics.
- Opens Instagram's public topic results in a real browser.
- Extracts unique public post and Reel cards.
- Links content to the associated public account identity.
- Saves the original keyword, matched hashtag, source page, and position on every row.
This makes results auditable: you can always see why a record appeared.
Who is it for?
- Social media researchers comparing themes and visible engagement.
- Creator partnership teams finding accounts active in a niche.
- Coffee, fashion, travel, and consumer brands collecting public content examples.
- Agencies building repeatable client research exports.
- Analysts and data teams loading Instagram discovery records into Sheets, a warehouse, or BI tooling.
- AI workflows that need typed public content records rather than screenshots.
Why use this Actor?
- Search with general phrases, not only exact usernames or URLs.
- Return both content and associated account records in one dataset.
- Preserve keyword and matched-topic provenance.
- Normalize compact engagement such as
36.3Kto36300while retaining the original text. - Deduplicate content URLs and accounts across related topics.
- Stop at the requested result limit.
- Fail clearly when Instagram returns a challenge or no usable records instead of silently succeeding with an empty dataset.
- Use the configured Apify Proxy for cloud reliability, with a bounded direct fallback.
What data is extracted?
| Field | Meaning |
|---|---|
type | post, reel, or account |
recordId | Content shortcode or account username |
url | Canonical public Instagram result URL |
username | Associated public account username |
profileUrl | Canonical account URL |
profileImageUrl | Public profile image URL, when exposed |
caption | Caption displayed on the public topic card |
hashtags | Hashtags parsed from the caption |
mentions | Mentioned usernames parsed from the caption |
engagementLabel | Metric name shown by Instagram, such as views |
engagementCount | Normalized numeric metric |
engagementText | Original compact metric, such as 36.3K |
imageUrl | Public image or thumbnail URL, when exposed |
videoUrl | Public video URL when Instagram exposes it |
matchedKeyword | Original input keyword |
matchedHashtag | Related topic used for discovery |
sourcePageUrl | Instagram public topic page |
position | One-based card position |
scrapedAt | Collection time in ISO 8601 format |
Fields can be null when Instagram does not expose them on a public card. Media CDN URLs may expire; store the canonical Instagram URL as the durable reference.
Getting started
- Open the Actor input page.
- Add one to ten real keywords.
- Choose a maximum result count.
- Select posts and Reels, accounts, or both.
- Keep the recommended US residential proxy fallback enabled for cloud reliability.
- Click Start.
- Open the Dataset tab to inspect, download, or integrate the results.
A useful first input is:
{"keywords": ["specialty coffee", "home coffee roasting"],"maxItems": 30,"maxHashtagsPerKeyword": 2,"resultTypes": ["content", "account"],"proxyConfiguration": {"useApifyProxy": true,"apifyProxyGroups": ["RESIDENTIAL"],"apifyProxyCountry": "US"}}
Input parameters
keywords
Required array of one to ten non-empty general phrases. Keywords are resolved to related Instagram topics; they do not need a leading #.
maxItems
Maximum combined number of unique rows. The limit applies across every keyword and both selected entity types. Allowed range: 1–500. Default: 30.
maxHashtagsPerKeyword
How many of the highest-volume related Instagram topics to inspect per keyword. Allowed range: 1–5. More topics improve breadth but require more browser work. Default: 2.
resultTypes
Choose content, account, or both. content includes posts and Reels. account emits one unique identity row per associated public creator found.
proxyConfiguration
Optional Apify Proxy configuration. The prefill enables US residential routing for cloud reliability; if that configured route fails, the Actor makes one bounded direct fallback attempt.
Output example
The following is anonymized but matches the current output contract:
{"type": "reel","recordId": "DAbCdEf12xY","url": "https://www.instagram.com/reel/DAbCdEf12xY/","username": "example_roastery","profileUrl": "https://www.instagram.com/example_roastery/","caption": "A small-batch roast for a bright morning cup. #specialtycoffee","hashtags": ["specialtycoffee"],"mentions": [],"engagementLabel": "views","engagementCount": 36300,"engagementText": "36.3K","matchedKeyword": "specialty coffee","matchedHashtag": "specialtycoffee","sourcePageUrl": "https://www.instagram.com/popular/specialtycoffee/","position": 1,"scrapedAt": "2026-01-15T12:00:00.000Z"}
Associated account rows use type: "account". Content-only fields are null or empty on those rows.
How much does it cost to search Instagram by keyword?
The Actor uses pay-per-event pricing:
- Start: $0.013 once per run.
- Result item: tiered by your Apify plan. The BRONZE price is $0.003464 per saved content or account row, with lower rates on higher plans.
At the BRONZE rate:
| Saved results | Actor events |
|---|---|
| 10 | about 0.0476 USD including start |
| 100 | about 0.3594 USD including start |
| 500 | about 1.745 USD including start |
Apify platform usage and residential proxy transfer can be passed through separately. Actual cost depends on the number of topics opened, page behavior, selected proxy, and run time. The run never charges an item event for a rejected or duplicate card.
Search and creator-research workflows
One-time trend scan
Search a broad phrase, request content rows, and sort by engagementCount to inspect currently visible public examples.
Creator discovery
Select both result types. Group content by username, then use account rows as a unique creator list with a direct public profile URL.
Recurring monitoring
Schedule the same input daily or weekly. Store each run's dataset and compare recordId, engagementCount, and scrapedAt downstream. The Actor does not maintain historical state or send alerts by itself.
Spreadsheet or warehouse export
Download JSON, CSV, Excel, XML, or RSS from the Dataset tab, or consume dataset items through the Apify API.
JavaScript API example
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: process.env.APIFY_TOKEN });const run = await client.actor('automation-lab/instagram-keyword-search-scraper').call({keywords: ['specialty coffee'],maxItems: 30,maxHashtagsPerKeyword: 2,resultTypes: ['content', 'account']});const { items } = await client.dataset(run.defaultDatasetId).listItems();console.log(items);
Python API example
import osfrom apify_client import ApifyClientclient = ApifyClient(os.environ['APIFY_TOKEN'])run = client.actor('automation-lab/instagram-keyword-search-scraper').call(run_input={'keywords': ['home coffee roasting'],'maxItems': 20,'resultTypes': ['content'],})items = client.dataset(run['defaultDatasetId']).list_items().itemsprint(items)
cURL API example
curl -X POST \"https://api.apify.com/v2/acts/automation-lab~instagram-keyword-search-scraper/runs?token=$APIFY_TOKEN&waitForFinish=120" \-H 'Content-Type: application/json' \-d '{"keywords":["latte art"],"maxItems":20,"resultTypes":["content","account"]}'
Fetch dataset items using the defaultDatasetId returned by the run.
Use with Apify MCP
Add the Actor to Claude Code:
claude mcp add --transport http apify \"https://mcp.apify.com?tools=automation-lab/instagram-keyword-search-scraper"
For Claude Desktop, add this server to your MCP configuration. Cursor and VS Code can use the same remote-server JSON:
{"mcpServers": {"apify": {"url": "https://mcp.apify.com?tools=automation-lab/instagram-keyword-search-scraper"}}}
Example prompts:
- “Find public Instagram posts and Reels for specialty coffee and summarize recurring themes.”
- “Build a unique list of accounts associated with home coffee roasting.”
- “Compare visible engagement across latte art and coffee roasting content.”
Integrations
Use Apify integrations to send completed datasets to:
- Google Sheets
- Make
- Zapier
- Slack
- Webhooks
- Amazon S3
- Google Drive
- a custom API or data warehouse
For monitoring, trigger a downstream workflow after each scheduled run and compare stable recordId values.
Limits and expected behavior
- Results come from public, logged-out Instagram topic surfaces.
- A general keyword is mapped to related hashtags, so this is relevance discovery rather than an exhaustive full-text index.
- Instagram chooses and orders the public cards.
- The public surface can favor Reels for some topics.
- Private accounts and private content are not accessed.
- Login-only search history, contacts, followers, and private engagement are not included.
- Captions or metrics may be absent when Instagram omits them.
- Media CDN URLs can expire.
- The maximum result limit counts both content and account rows when both are selected.
- Instagram can change its public UI or anti-automation behavior.
Reliability and troubleshooting
The Actor validates expected page shapes and retries a failed route through the configured proxy. It uses conservative browser concurrency and blocks heavy images, video, and fonts while preserving public metadata.
If a run produces no usable records, it exits as failed rather than masking the upstream problem.
Why did my run return fewer rows than maxItems?
The public topic may expose fewer unique cards or accounts than requested. Deduplication across topics can also reduce the total. Try a broader keyword, inspect more topics per keyword, or select both result types.
Why did direct mode fail?
Instagram can challenge datacenter addresses or vary public surfaces by geography. Enable Apify Proxy with the RESIDENTIAL group and US country fallback.
Why is videoUrl null on a Reel?
Instagram does not always expose a durable video CDN URL in the public topic card. Use the canonical url to reference the Reel.
Responsible use and legality
Only collect public information you have a lawful reason to process. Follow Instagram's terms, applicable privacy and database laws, intellectual-property rules, and your organization's policies. Do not use this Actor to access private accounts, evade authentication, profile sensitive traits, harass people, or send unsolicited messages. Minimize retention of personal data and honor deletion or objection requests where required.
This tool provides technical access to public pages; it does not provide legal advice.
FAQ
Does it require my Instagram password or cookie?
No. The selected workflow uses public logged-out topic surfaces and does not accept Instagram credentials.
Can it search several keywords in one run?
Yes, up to ten. Every row records the input keyword that produced it.
Does it return both posts and Reels?
Yes, when those content types appear in the selected public topics. The type field distinguishes them.
Can I return only creators?
Yes. Set resultTypes to ["account"].
Does it download media files?
No. It returns public media or thumbnail URLs when available and always preserves the canonical Instagram result URL.
Is this a historical Instagram database?
No. It collects the public topic surface visible during the run. Schedule runs and retain datasets if your lawful workflow needs change tracking.
Related Actors
Explore other public-source tools from automation-lab on Apify. Choose an Actor whose source and output contract match your workflow; this Actor is specifically for keyword-led public Instagram topic discovery.