Instagram Keyword Search Scraper avatar

Instagram Keyword Search Scraper

Pricing

Pay per event + usage

Go to Apify Store
Instagram Keyword Search Scraper

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

Stas Persiianenko

Maintained by Community

Actor 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:

  1. Resolves the phrase to relevant public Instagram hashtag topics.
  2. Selects the highest-volume related topics.
  3. Opens Instagram's public topic results in a real browser.
  4. Extracts unique public post and Reel cards.
  5. Links content to the associated public account identity.
  6. 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.3K to 36300 while 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?

FieldMeaning
typepost, reel, or account
recordIdContent shortcode or account username
urlCanonical public Instagram result URL
usernameAssociated public account username
profileUrlCanonical account URL
profileImageUrlPublic profile image URL, when exposed
captionCaption displayed on the public topic card
hashtagsHashtags parsed from the caption
mentionsMentioned usernames parsed from the caption
engagementLabelMetric name shown by Instagram, such as views
engagementCountNormalized numeric metric
engagementTextOriginal compact metric, such as 36.3K
imageUrlPublic image or thumbnail URL, when exposed
videoUrlPublic video URL when Instagram exposes it
matchedKeywordOriginal input keyword
matchedHashtagRelated topic used for discovery
sourcePageUrlInstagram public topic page
positionOne-based card position
scrapedAtCollection 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

  1. Open the Actor input page.
  2. Add one to ten real keywords.
  3. Choose a maximum result count.
  4. Select posts and Reels, accounts, or both.
  5. Keep the recommended US residential proxy fallback enabled for cloud reliability.
  6. Click Start.
  7. 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 resultsActor events
10about 0.0476 USD including start
100about 0.3594 USD including start
500about 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 os
from apify_client import ApifyClient
client = 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().items
print(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

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.

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.