Skip to content

September 23, 2026 · 12 min read

Instagram Keyword Scraper: 135 of 153 Runs Succeeded (2026)

By Crawlerbros Engineering Team

Each post record carries 21 fields, including engagement metrics, media URLs, location data, and music information. Operating on Apify's free plan, a thousand results costs $5.00, and Apify's free plan includes $5.00 of monthly usage with no credit card. The example input caps maxPosts at 3, returning at most 3 results for up to $0.01 in result charges. Built for marketers, researchers, and analysts who need structured keyword data at scale, this Actor is not for anyone who requires private account access or data from sources outside public search results.

Try it before you read further. Apify's free plan includes $5.00 of usage every month with no credit card, enough for up to 1,000 results at $0.005 each before platform usage. Open Instagram Keyword Scraper on Apify and run the prefilled example.

How reliable is Instagram Keyword Scraper in production?

Across the last 30 days of public runs on the Apify platform, Instagram Keyword Scraper recorded 153 runs with the following outcomes.

Outcome Runs Share
Succeeded 135 88.2%
Failed 0 0.0%
Aborted by the user 15 9.8%
Timed out 3 2.0%
Total 153 100.0%

The telemetry shows about 2 runs in a hundred time out. Build alerting around timeout events and keep input batches small to minimize long-running jobs. Aborted runs were stopped by the user.

What does it cost to run Instagram Keyword Scraper?

Each result costs $0.005 on Apify's free plan, which is $5.00 per 1,000 results. Starting a run is charged separately at $0.05 per GB of Actor memory. Apify also bills the platform usage each run consumes, at the rates of your Apify plan, on top of these charges.

Apify plan Per result Per 1,000 results
FREE $0.005 $5.00
BRONZE $0.00433 $4.33
SILVER $0.00367 $3.67
GOLD $0.003 $3.00
PLATINUM $0.003 $3.00
DIAMOND $0.003 $3.00

Worked example: collecting 10,000 results costs $50.00 in result charges before run-start fees and platform usage. With 2.0% of runs failing or timing out in the last 30 days, budget for re-running a portion of those batches rather than assuming every run completes.

The primary cost driver is the maxPosts control, which directly determines the number of posts written to the dataset. The cheapest way to evaluate the output before spending is to run a single keyword capped at 3 posts using Apify's free plan.

How do you run Instagram Keyword Scraper from the API?

The schema marks 1 of its 4 controls as required: keywords. Nothing in the payload below is illustrative. Those are the schema's prefilled defaults for Instagram Keyword Scraper, so the request works once your token is in place.

Call the synchronous endpoint to start a run and receive dataset items in one request:

curl -X POST "https://api.apify.com/v2/acts/crawlerbros~instagram-keyword-scraper/run-sync-get-dataset-items?token=$APIFY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"keywords":["fitness"],"maxPosts":3,"sessionName":"default_session"}'

The same run from Python, using the official client:

from apify_client import ApifyClient

client = ApifyClient("<YOUR_APIFY_TOKEN>")

run_input = {
  "keywords": [
    "fitness"
  ],
  "maxPosts": 3,
  "sessionName": "default_session"
}

run = client.actor("crawlerbros~instagram-keyword-scraper").call(run_input=run_input)

for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item)

And from Node.js:

import { ApifyClient } from 'apify-client'

const client = new ApifyClient({ token: '<YOUR_APIFY_TOKEN>' })

const input = {
  "keywords": [
    "fitness"
  ],
  "maxPosts": 3,
  "sessionName": "default_session"
}

const run = await client.actor('crawlerbros~instagram-keyword-scraper').call(input)
const { items } = await client.dataset(run.defaultDatasetId).listItems()
console.log(items)

Because the call is synchronous, your client waits for the whole run. Keep it for exploration. For scheduled work, start the run without waiting and collect the dataset afterwards, so network trouble costs you a retry rather than the results.

Which Instagram Keyword Scraper inputs matter, and which can you skip?

The keywords control is required and accepts up to 50 search phrases. Leave sessionName on its default value unless managing multiple Instagram accounts.

  • keywords (array): List of keywords or phrases to search for on Instagram. Each keyword will be searched separately.
  • maxPosts (integer): Maximum number of posts to extract for each keyword. Default: 20.
  • cookies (string): Instagram authentication cookies in JSON format. If not provided, uses our own cookies file as fallback. Format: [{"name":"sessionid","value":"...","domain":".instagram.com"}, ...]. See README for extraction instructions.
  • sessionName (string): Name for saving/loading cookies between runs. Use different names for different Instagram accounts. Default: "default_session".

What does Instagram Keyword Scraper return?

The returned records are well-suited for tracking content trends, engagement patterns, and hashtag usage. They do not contain private profile details or direct contact emails.

  • username: string - Instagram username of the post author
  • full_name: string - Full display name of the post author
  • profile_url: string - URL to the author's Instagram profile
  • collaborators: array - List of collaborator usernames on the post
  • post_url: string - Direct URL to the Instagram post
  • pub_date: string - Publication date in ISO 8601 format
  • caption: string - Full caption text of the post
  • mentions: array - Usernames @mentioned in the caption
  • hashtags: array - Hashtags used in the caption
  • media_urls: array - Direct URLs to media files (images and videos)
  • thumbnail_url: string - URL of the post thumbnail image
  • media_type: string - Type of media: Photo, Video, Reel, IGTV, or Carousel
  • media_count: integer - Number of media items in the post
  • likes_hidden: boolean - Whether like counts are hidden on this post
  • like_count: integer - Number of likes (null if hidden by the author)
  • comment_count: integer - Number of comments on the post
  • location: object - Location tagged in the post (name, latitude, longitude)
  • music: object - Music/audio used in the post (artist and title)
  • search_keyword: string - The keyword that was used to find this post
  • scraped_at: string - Timestamp when the data was collected
  • status: string - "success" when a post was extracted, "No posts found" when a keyword has no results

These are the documented fields. Optional ones can be empty on a given record, so measure how often each field your deliverable depends on is populated across a real sample before automating the handoff.

How do you build the workflow end to end?

Open Instagram Keyword Scraper and work through these in order. Each step ends with something to check, so a bad configuration surfaces on a small run rather than a scheduled one.

  1. Add your search keywords to the keywords control, providing at least one term such as "fitness".
  2. Paste your authentication cookies into the cookies control using the required JSON format.
  3. Set the maxPosts control to a low integer such as 3 for your initial test run.
  4. Assign a unique identifier to sessionName if you plan to manage multiple accounts.
  5. Click Start to launch the extraction and wait for the execution to complete.
  6. Inspect the resulting dataset to verify that fields such as username, caption, and like_count are populated.

How do you apply it? Three worked playbooks

These are Instagram Keyword Scraper's own documented use cases, each worked through as an operating pattern rather than a description.

Use case 1: Market research

Outcome: Analyze trending topics and popular content for any niche or industry

Configure: Set keywords to your target industry terms and maxPosts to 50.

Working method: Run the Actor for a single niche keyword first, compare engagement metrics across media types, and expand your keyword list once the structure confirms.

Deliverable: A dataset of posts containing captions, hashtags, and engagement counts.

Stop condition: Runs return empty datasets due to expired session cookies.

Use case 2: Influencer discovery

Outcome: Find creators in specific niches by searching relevant keywords

Configure: Set keywords to niche-specific phrases and maxPosts to 100.

Working method: Execute a search for a distinct creator community, sort the resulting items by author profile URLs, and filter for active posters.

Deliverable: A list of creator profile URLs and corresponding post metadata.

Stop condition: Authentication errors block search page access completely.

Use case 3: Brand monitoring

Outcome: Track how your brand, products, or campaigns are discussed on Instagram

Configure: Set keywords to your brand name or campaign hashtags and maxPosts to 200.

Working method: Schedule periodic runs with sessionName configured, track changes in comment and like counts over time, and aggregate mention frequencies.

Deliverable: A dataset of brand mentions containing caption text and publication timestamps.

Stop condition: Runs consistently time out.

What breaks, and how do you design around it?

  • Over the last 30 days, 0.0% of public runs failed and 2.0% timed out. Build retries and alerting around those rates rather than assuming every run completes.

When session cookies expire and cause search access to fail, update your credentials via the cookies input. When encountering unexpected low result counts for a broad keyword, consider splitting it into more specific, niche terms.

When should you not use Instagram Keyword Scraper?

Do not use this Actor if you need to gather posts from known Instagram users directly from their profiles without using keyword searches. For that specific need, the Instagram Profile Scraper is the appropriate tool. Avoid this Actor if your only input is direct post URLs rather than search terms; in such cases, the Instagram Post Scraper can extract data without requiring cookies. Skip this tool if your primary objective is to collect comments from a specific, already identified post; instead, use the Instagram Comment Scraper. This Actor focuses on keyword-driven post discovery, making it less suitable for scenarios where you already know the exact profiles or posts you wish to analyze.

What should you check before trusting the output?

  • Verify that the username field is non-empty for every successfully extracted record.
  • Check that like_count is either a valid integer or null when likes_hidden is true.
  • Ensure that the status field contains "success" for valid posts or "No posts found" when a keyword has no matches.
  • Confirm that pub_date matches a valid ISO 8601 string format before processing timestamps further.
  • Stop any scheduled run immediately if the output dataset consistently returns status values of "No posts found" across all provided keywords.

None of this proves a record is correct. It gives a scheduled Instagram Keyword Scraper run defined points where it should stop instead of quietly passing bad data downstream.

Frequently asked questions

How do I provide valid authentication cookies for Instagram searches?

You must export cookies from an active Instagram session using a browser extension like Cookie-Editor and paste the resulting JSON array into the cookies input field. Using a dedicated scraping account is strongly recommended because session tokens expire periodically and require manual refreshing.

What happens when a search keyword returns no matching posts on Instagram?

When a search yields no results, the scraper writes a single fallback record to the dataset containing the search_keyword and a status value of "No posts found". This behavior allows automated pipelines to distinguish between a failed execution and a keyword that simply has zero matches.

How much does it cost to use this Actor on Apify's free plan?

On Apify's free plan, each result costs $0.005, which is $5.00 per 1,000 results. Apify's free plan includes $5.00 of monthly usage, which covers up to 1,000 results of this Actor before run-start charges and other platform usage fees.

Can I extract video files and carousel media from the search results?

Yes, the media_urls array provides direct links to images, videos, and all items within carousel posts. The media_type field identifies whether each retrieved item is a Photo, Video, Reel, IGTV, or Carousel.

Why did my run time out during execution?

Telemetry shows that 3 runs timed out out of 153 total runs in the last 30 days. Timeouts usually occur when processing extremely large keyword batches, so reducing maxPosts per keyword helps prevent long-running executions.

Where to go next

When you are ready to run it, open Instagram Keyword Scraper on Apify; the free plan covers up to 1,000 results a month.

Start with the Instagram Keyword Scraper Actor page for the current input schema, pricing tier, and run history.

It is part of the Instagram Scraping Suite, which puts every related Actor on one page with its price and run history.

Readers running Instagram Keyword Scraper commonly pair it with:

Related guides:

Resources

  • Actor documentation, input schema, and pricing: verified against the published Actor on 2026-09-23.

  • Actor last updated by its maintainers on 2026-04-15.

  • Run outcome figures cover the 30 day public window ending 2026-09-23.

  • Instagram Keyword Scraper on Apify

● Featured actors

Instagram Keyword Scraper

Search Instagram by keywords and extract detailed post data at scale. Get usernames, captions, engagement metrics, media URLs, hashtags, mentions, location data, music info, and more for every matching post. Perfect for market research, brand monitoring, competitor analysis and etc.

Run on Apify ↗