# Instagram Search Scraper - Find Accounts & Hashtags by Keyword (`apt_marble/instagram-search-scraper-find-accounts-hashtags-by-keyword`) Actor

Search Instagram by keyword and export matching accounts and hashtags as clean structured JSON: usernames, full names, user ids, follower counts, hashtag post counts, profile pictures and links - each row with the keyword it matched and its rank in Instagram's own search order.

- **URL**: https://apify.com/apt_marble/instagram-search-scraper-find-accounts-hashtags-by-keyword.md
- **Developed by:** [Hamza](https://apify.com/apt_marble) (community)
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.70 / 1,000 search result collecteds

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

## Instagram Search Scraper - Accounts & Hashtags

Search Instagram by keyword and export what Instagram's own search returns: matching accounts with follower counts and verified flags, and hashtags with post counts. One keyword in, clean structured rows out.

### What it collects

**Accounts** - username, full name, user ID, follower count, verified badge, private flag, profile picture, profile link, and the position Instagram ranked it at.

**Hashtags** - tag name, tag ID, post count, link, and search rank.

Every row carries the keyword it matched and its rank in Instagram's own ordering.

### Why this one

- **Instagram's real search results** - the same accounts and hashtags Instagram's own search box returns, in Instagram's own order
- **Live streaming results** - rows appear in the dataset as they are found; start reading while the run continues
- **Resilient by design** - if one search route is busy, the actor automatically tries another way; if Instagram holds the limit, you keep a clean partial result with a clear status instead of a failed run
- **Pay only for results** - pay-per-event pricing: one small charge per row delivered

### Use cases

- **Lead discovery** - find businesses and creators by niche keyword, then feed the usernames into a contact-info or followers export
- **Influencer sourcing** - rank creators by follower count straight from the search page
- **Hashtag research** - map the tags of a niche with real post counts
- **Competitor mapping** - surface every account Instagram associates with a product or brand term

### Input

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| Search keyword | string | yes | The keyword to search for, like "coffee roasters" or "fitness coach" |
| Search for | select | no | Accounts, Hashtags, or Both (default: Accounts) |
| Maximum results | integer | no | Stop after this many rows (default 30, up to 200) |

### Output

One row per result: type (account or hashtag), profile picture, username/tag, full name, follower count or post count, verified badge, link, search rank, and the matched keyword. JSON, CSV, Excel, XML, or straight into your pipeline via the Apify API.

### Honest limits

- **Instagram caps search results.** A keyword returns what Instagram's search serves - a ranked set of top results, not an exhaustive index. The actor combines both of Instagram's own search views and saves everything they provide.
- **Instagram ranks, we don't.** Result order is Instagram's own ranking, not follower count or recency.
- **Rate limits are real.** Heavy use can hit Instagram's limits; the actor automatically tries backup routes and, if the limit holds, returns everything collected so far with a clear status.

### FAQ

**Why did my keyword return fewer results than I asked for?**
Instagram's search serves a ranked set of top results, and how deep that set goes depends on the keyword. The actor combines both of Instagram's search views to collect everything available - what Instagram serves is what you get.

**Can I search for posts or reels?**
This actor searches accounts and hashtags. Pair it with a posts or reels scraper using the hashtags or accounts it finds.

**What happens if Instagram rate-limits the run?**
The actor automatically tries backup routes when one is busy. If the limit holds, the run finishes as a clean partial - you keep everything collected, with a status that says so.

**Does the keyword search personal accounts too?**
Yes - accounts of every type appear when Instagram ranks them for the keyword. Only public data is collected.

# Actor input Schema

## `query` (type: `string`):

The keyword to search for, like "coffee roasters" or "fitness coach".

## `searchType` (type: `string`):

Accounts return profiles with follower counts and verified flags; hashtags return tags with post counts.

## `maxResults` (type: `integer`):

Stop after this many rows. Instagram itself caps how many search results it serves per keyword - the run saves everything Instagram provides.

## Actor input object example

```json
{
  "query": "coffee roasters",
  "searchType": "accounts",
  "maxResults": 30
}
```

# Actor output Schema

## `dataset` (type: `string`):

No description

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "query": "coffee roasters"
};

// Run the Actor and wait for it to finish
const run = await client.actor("apt_marble/instagram-search-scraper-find-accounts-hashtags-by-keyword").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = { "query": "coffee roasters" }

# Run the Actor and wait for it to finish
run = client.actor("apt_marble/instagram-search-scraper-find-accounts-hashtags-by-keyword").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "query": "coffee roasters"
}' |
apify call apt_marble/instagram-search-scraper-find-accounts-hashtags-by-keyword --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,apt_marble/instagram-search-scraper-find-accounts-hashtags-by-keyword"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/1ih8qFXuw80ftXcOf/builds/7QaRUVayQPcuBzIYu/openapi.json
