# Instagram Influencer Finder — AI-vetted creators & emails (`rich_minds/instagram-creator-qualifier`) Actor

First 25 creators free. Find Instagram & TikTok influencers by hashtag, niche or lookalike — engagement rate, audience quality, contact e-mail and an AI opener per creator. No login, no cookies.

- **URL**: https://apify.com/rich\_minds/instagram-creator-qualifier.md
- **Developed by:** [Rich Minds](https://apify.com/rich_minds) (community)
- **Categories:** Social media, Lead generation, Marketing
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

Pay per event

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

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 Influencer Finder — AI-vetted creators & emails

**Find Instagram and TikTok influencers who fit your campaign: real engagement, a contact e-mail and a ready opener. You pay only for the creators worth contacting.**

⚡ First **25 creators free** · 💵 **$0.004** per qualified creator · 🤖 **$0.01** with AI vetting · 🔑 **No API key needed** on Apify plans that can run Store Actors ([which plan?](#-faq)) · ⏱️ demo in ~10 s, a 2-hashtag search in ~3–6 min

![One row per qualified creator — followers, engagement rate, audience quality, score, e-mail and the AI's opener](https://api.apify.com/v2/key-value-stores/1eKrkbgOghgKOYmaY/records/shortlist.svg)

> **Try it in 30 seconds.** Click **Try it**. The form is already filled with a free demo: 18 sample Instagram and TikTok
> records that fold into 6 creators, so nothing is charged. Then pick a niche preset or type your hashtags, and your
> first **25 qualified creators** are free. Creators that fail your filters are never charged.
> → [What a run costs](#-pricing--what-a-run-really-costs) · [What the AI adds](#-what-the-ai-tier-adds) · [Audit a list](#%EF%B8%8F-vet-a-list-you-already-have--fake-follower-check) · [Run it weekly](#-run-it-weekly)

### ⚡ At a glance

| | |
|---|---|
| **What you get** | a ranked shortlist of creators: engagement rate, audience quality, contact e-mail, brand-safety check, AI fit score and a personalised opener |
| **You provide** | a niche preset or hashtags, lookalike creators, or a list of profiles, plus one sentence about your campaign |
| **Output** | JSON / CSV / Excel dataset, best first, plus an optional CSV for Instantly, Lemlist, HubSpot or Sheets |
| **Typical run** | 2 hashtags × 50 posts → ≈ 40 creators found → ≈ 15–20 qualified in 3–6 minutes (estimate) |
| **Cost of that run** | ≈ $0.35 Instagram Scraper on your account + $0.20 here + ≈ $0.08 AI tokens ≈ **$0.63** |
| **Free tier** | first 25 qualified creators per account (up to 10 per run) |
| **Keys / setup** | none on Apify plans that can run Store Actors: the AI runs through Apify's model access. On the free plan use `dataset` / `list` mode and `llmProvider: byok` with your own key |
| **Works with** | Schedules, webhooks, Google Sheets, Slack, Instantly / Lemlist / HubSpot CSV, Make / n8n / Zapier, MCP & AI agents |

### 🎯 What this Actor does

Instagram Scraper returns one row per *post*. This Actor turns those posts into **one row per creator**, vetted and
ready to contact, and you pay only for the ones that pass your filters:

- **Influencer discovery by hashtag, niche or lookalike.** Type hashtags, pick a niche preset, or name creators you like and get more like them.
- **Real engagement metrics.** Engagement rate as a % of followers, posting cadence, reel share and sponsored share, all computed from recent posts rather than the follower count.
- **Influencer vetting you can trust.** Audience quality from real comments, a suspicious-ratio flag for bought followers, and a brand-safety screen with verbatim evidence.
- **A way to reach them.** An e-mail from the bio, captions or link-in-bio page (checked on request), and whether to use e-mail, bio link or DM.
- **AI assessment.** A fit score (0–100) against *your* brief with the reasons behind it, 3–5 content themes, a personalised opener that names a real post, and a next step.
- **A score and label** (`hot` / `warm` / `cold`), so the sheet is already sorted by who to contact first.

#### 🔎 Niche presets and hashtags

`nichePreset` (beauty, fitness, food, travel, fashion, parenting, gaming, tech, home, pets) adds six proven hashtags
and merges them with your own `hashtags`. If you type no search term, the hashtags come from your Brand brief.
→ Output: `sampledFrom: ["#cleanbeauty"]`, plus `OUTPUT.yieldByQuery` showing which tags paid off.

#### 👯 Lookalike creators

`lookalikeOf`: name 1–5 creators who already work for you. The Actor reads their hashtags, mentions and follower
band, searches from those, and leaves the seeds themselves out. → Output: `OUTPUT.lookalike` shows the derived hashtags and band.

#### 📱 Instagram or TikTok

`platform: instagram | tiktok` runs Instagram Scraper or TikTok Scraper with the same fields. Both platforms give the
same creator row, so rules, AI and views stay one. → Output: `"platform": "tiktok"`.

#### 👥 Audience quality

`audienceQuality` (0–100) reads the sampled comments: specific questions and varied replies score high, while
"nice 🔥" bot comments and emoji-only threads score low (`audienceQualitySignals` explains why).

#### ✉️ Verified e-mails

`verifyEmails: true` checks every delivered address (syntax, MX record, role address such as info@). →
Output: `"emailVerified": true`, `"emailCheck": "valid"`. A bounced outreach e-mail costs more than the creator.

#### 📬 Weekly digest

`digestWebhookUrl` (Slack / Discord / Teams) or `notifyEmail` gets one message per run with the new creators, the hot
ones and the top 3 with links. It is sent only when something new was found.

#### 📤 Export for your outreach tool

`exportPreset: instantly | lemlist | hubspot | sheets` also writes **EXPORT.csv** with the columns that tool imports,
so there is no column mapping. The opener goes into `personalization` / `icebreaker`.

It also remembers every creator you have already received (never billed twice), honours an exclude list
(`suppressionList`), and works as a tool for AI agents and n8n / Make / Zapier because every input is a plain typed field.

### 🕵️ Vet a list you already have — fake follower check

Got creators from an agency, a DM or last year's campaign? Paste them into `profiles` (handles or URLs) and run an
**influencer audit** before you pay anyone:

- `suspicious_ratio` flags ≥ 50k followers with engagement under 0.3 %, the classic sign of bought followers (a **fake follower checker** built on public data).
- `audienceQuality` and `audienceQualitySignals` tell real conversation apart from generic bot comments.
- `brandSafetyRisk` quotes the caption or comment that triggered it, and `sponsoredShare` shows how ad-heavy the feed is.
- Set `minScore: 0` to get every creator on the list back with the verdict, not only the good ones. The ready Task
  [`audit-my-creator-list`](#-try-it-for-your-niche) does exactly that.

### 🆚 Why this instead of Instagram Scraper?

| | [Instagram Scraper (`apify/instagram-scraper`)](https://apify.com/apify/instagram-scraper) | **Instagram Influencer Finder** |
|---|---|---|
| **Price** | $0.0027 per result · 43,155 users / 30 days | $0.004 per qualified creator, first 25 free |
| **What you pay for** | every post row, including off-niche and duplicate authors | only *qualified creators*; anything that fails your filters costs **$0** |
| **Unit** | one row per post; the author is buried in `ownerUsername` | one row per creator, with the post sample attached |
| **Vetting** | follower count only; its README says to run four jobs by hand | engagement rate, audience quality, suspicious ratio, brand safety, contact, all in one run |
| **Repeat runs** | the same creators again next week | cross-run memory + exclude list: only new creators are delivered and charged |
| **Platforms** | Instagram | Instagram and TikTok (`clockworks/tiktok-scraper`) in one schema |
| **Spend control** | results limit | `maxDiscoveryChargeUsd` (default $2), `maxQualified`, `maxToProcess` |
| **AI** | none | fit score, themes, opener, next step through Apify's model access |

### 💵 Pricing — what a run really costs

Pay per result: **one event per qualified creator, nothing else.** No start fee, no charge per filter.

| Event | When it is charged | Price |
|---|---|---|
| `free-tier` | your first 25 qualified creators on this Actor (up to 10 per run), in any mode | **$0.00** |
| `qualified-creator-basic` | AI off: creator row with every metric, contact and flag, plus a rule score and a template opener | **$0.004** |
| `qualified-creator-ai` | AI on: everything above plus fit score, reasons, summary, themes, brand-safety verdict, personalised opener and next step | **$0.01** |

**You are never charged for:** the free demo, discovery, profile look-ups, bio-link checks, creators below `minScore`,
creators that fail a filter, creators on your exclude list, or creators you received in an earlier run.

**How that compares:** $0.004 is 1.48× the median raw-row price of the Instagram / TikTok scrapers ($0.0027, what
Instagram Scraper charges per result). But one qualified creator replaces ≈ 7 raw rows ($0.0189 of scraping), plus
the profile look-up and the manual vetting, and you are billed only for creators that pass.

**Worked example** (estimate until the first published live run): 2 hashtags × 50 posts + profile details for ≈ 30
candidates = ≈ 130 results × $0.0027 ≈ **$0.35** on your account → ≈ 20 qualified with AI on → 20 × $0.01 = **$0.20**
here + ≈ **$0.08** AI tokens = **≈ $0.63**, about **$0.03 per vetted creator**. The first 10 in that run are free.

AI tokens are billed separately through Apify's model access at OpenRouter rates. We measured ≈ 2,600 tokens per
creator, ≈ $0.004 with the default `anthropic/claude-haiku-4.5`. If you bring your own key, the tokens go to that key.

### 🚀 How to use it

1. **Click `Try it`.** The form is pre-filled with the free demo, and the result shows up in about 10 seconds.
2. **Say who you are looking for.** Set `sourceMode: actor`, pick `platform`, a `nichePreset` or your `hashtags`
   (or `lookalikeOf`), and write your **Brand brief** (`goalDescription`): what you sell and who fits.
3. **Set the free filters** you care about: follower band, `minEngagementRate`, `activeWithinDays`, `requireContact`.
4. **Start.** Qualified creators land best-first in the **Shortlist**, **Metrics** and **Outreach** views.

### 🤖 What the AI tier adds

The same creator, AI **off** (`qualified-creator-basic`, $0.004): facts, flags, a rule score and a template opener:

```json
{"username": "skin.by.sam", "followersCount": 45200, "engagementRate": 1.574, "audienceQuality": 80, "contactEmail": "hello@skinbysam.co", "ruleScore": 63, "fitScore": null, "score": 63, "label": "warm", "generatedText": "Hi Sam Okafor — loved your #cleanbeauty content. We're working on Skincare creators posting honest routines and product reviews, 10k–200k followers, active weekly…; open to a quick chat?"}
```

AI **on** (`qualified-creator-ai`, $0.01), the same row judged against *your* brief (local run, 2026-09-24):

```json
{
  "username": "skin.by.sam", "followersCount": 45200, "engagementRate": 1.574, "audienceQuality": 80,
  "contactEmail": "hello@skinbysam.co", "ruleScore": 63, "fitScore": 78, "score": 78, "label": "hot",
  "scoreReasons": ["followersCount 45.2k (within 10k‑200k target)", "engagementRate 1.57% (above low‑engagement threshold)", "postsPerWeek 1.06 (active weekly)"],
  "contentThemes": ["cleanbeauty", "skincareroutine", "spf"],
  "generatedText": "Hey Sam! Loved your double‑cleansing video #skincareroutine – the quick 60‑second guide was super clear. Would you be interested in featuring our new clean‑beauty serum in an honest review? Let me know!",
  "recommendedNextStep": "Email hello@skinbysam.co with campaign details."
}
```

By hand, that is 5–10 minutes per creator: read the feed, judge the fit, find the e-mail and write a first line that
isn't generic. At $0.01, 30 vetted creators cost less than one of those minutes. If the AI scores a creator the rules
kept below `minScore`, it is not delivered and not charged, and the status and `OUTPUT.aiRejected` say so.

### ⚙️ Input

A typical search (`actor` mode, AI on):

```json
{
  "sourceMode": "actor",
  "platform": "instagram",
  "nichePreset": "beauty",
  "hashtags": ["cleanbeauty"],
  "goalDescription": "Skincare creators with honest reviews, 10k–200k followers, brand-safe, reachable by e-mail — for a clean-beauty launch.",
  "minFollowers": 10000,
  "maxFollowers": 200000,
  "requireContact": "any",
  "maxQualified": 30,
  "maxDiscoveryChargeUsd": 0.5
}
```

#### Input options

| Field | Type | Default | What it does |
|---|---|---|---|
| `sourceMode` | `actor` | `dataset` | `list` | `actor` | Search on your account, read an existing dataset, or paste records (the form starts on the free `list` demo) |
| `platform` | `instagram` | `tiktok` | `instagram` | Which Store scraper the search runs |
| `nichePreset` | select | `none` | Six proven hashtags for your niche, merged with your own |
| `goalDescription` | string | — | Brand brief: what the AI scores against and writes the opener from |
| `minFollowers` / `maxFollowers` | integer | — | Follower band |
| `activeWithinDays` | integer | `60` | Latest post must be newer than this |
| `requireContact` | `none` | `any` | `email` | `none` | Require a bio link / contact phrase, or an e-mail |
| `minScore` | 0–100 | `45` | Below this = not delivered, not charged |
| `maxQualified` | integer | `100` | Hard cap on output (and on spend) |
| `maxDiscoveryChargeUsd` | number | `2` | Stops the source Actor once it has cost this much (the form uses `0.5`) |
| `enableAi` | boolean | `true` | AI assessment on/off |
| `exportPreset` | select | `none` | Extra EXPORT.csv for Instantly, Lemlist, HubSpot or Sheets |

The **Input** tab explains every other option: `lookalikeOf`, `profiles`, `datasetId`, `itemsList`, `minEngagementRate`,
`minSampledPosts`, `mustMentionKeywords`, `excludeKeywords`, `brandSafetyTopics`, `maxSponsoredShare`, `verifiedOnly`,
`businessAccountsOnly`, `targetFlags`, `suppressionList`, `verifyEmails`, `enrichBioLinks`, `outreachChannel`,
`outreachTone`, `llmProvider`, `llmModel`, `llmApiKey`, `aiCandidateMultiplier`, `aiTimeBudgetSecs`, `maxToProcess`,
`dedupeAcrossRuns`, `dedupeStoreName`, `digestWebhookUrl`, `notifyEmail`, `webhookUrl`, `webhookHeaders`,
`webhookBatchSize`. Places, search queries, per-source limits, timeouts and the raw source input are under
**Advanced source**.

**Flags** worth filtering on (`targetFlags`): `high_engagement`, `suspicious_ratio`, `email_found`, `contact_in_bio`,
`reels_creator`, `posts_sponsored`, `mostly_sponsored`, `brand_safety_keyword`, `low_audience_quality`, `tier_micro`
(10k–100k), `inactive_30d`. The full list is in the dataset schema.

### 📤 Output

One dataset item per qualified creator: JSON, CSV or Excel, or streamed to a webhook. A row from the local AI run on
the demo sample (shortened), shown as a paid run bills it:

```json
{
  "itemId": "tiktok:6812",
  "name": "Glow By Jules",
  "url": "https://www.tiktok.com/@glow_by_jules",
  "platform": "tiktok",
  "username": "glow_by_jules",
  "followersCount": 88000,
  "tier": "tier_micro",
  "sampledPosts": 2,
  "engagementRate": 14.96,
  "postsPerWeek": 2.0,
  "audienceQuality": null,
  "audienceQualitySignals": ["only 0 comments sampled"],
  "contactEmail": "jules.creator@gmail.com",
  "emailVerified": null,
  "contactChannel": "email",
  "flags": ["tier_micro", "high_engagement", "contact_in_bio", "email_found", "link_in_bio_service", "reels_creator", "low_sample"],
  "ruleScore": 74,
  "fitScore": 78,
  "score": 78,
  "label": "hot",
  "scoreReasons": ["engagementRate 14.96%", "followersCount 88k (within 10k‑200k range)", "contactEmail jules.creator@gmail.com in bio"],
  "brandSafetyRisk": "none",
  "generatedText": "Hey Jules! I loved your video on ‘3 drugstore products that beat luxury skincare’ – the cleanbeauty dupes you highlighted are exactly what our audience is looking for. Would you be interested in a paid collaboration?",
  "recommendedNextStep": "Email jules.creator@gmail.com",
  "chargedEvent": "qualified-creator-ai",
  "billedAs": "qualified-creator-ai",
  "dedupeKey": "tiktok:6812"
}
```

| Field group | What it tells you |
|---|---|
| `itemId`, `dedupeKey`, `url`, `platform`, `username` | Identity. `platform:profileId` is stable across runs and safe as a primary key |
| `followersCount`, `tier`, `engagementRate`, `postsPerWeek`, `reelShare`, `sponsoredShare` | Size, engagement and activity from the sampled posts |
| `audienceQuality`, `audienceQualitySignals` | Real conversation vs bot comments (`null` with fewer than 3 comments) |
| `contactEmail`, `emailFromLink`, `emailVerified`, `emailCheck`, `contactChannel` | How to reach them. `emailVerified` stays `null` unless `verifyEmails` is on |
| `flags`, `ruleScore`, `fitScore`, `score`, `label` | Rule findings, AI fit, final ranking |
| `scoreReasons`, `summary`, `contentThemes`, `brandSafetyRisk`, `generatedText`, `recommendedNextStep` | The assessment (rule fallbacks when AI is off) |
| `chargedEvent`, `billedAs` | What this row cost (`demo`, `free-tier`, or the event) and the tier it is priced at |

Views: **Shortlist** (who to contact first), **Metrics** (the numbers behind the score) and **Outreach** (contact +
opener, ready for a mail merge).

![Metrics view — sampled posts, likes, comments, engagement rate, audience quality, rule vs AI score](https://api.apify.com/v2/key-value-stores/1eKrkbgOghgKOYmaY/records/metrics.svg)

`OUTPUT` / `RUN_SUMMARY` holds the funnel (loaded → creators → filtered → AI-assessed → qualified), skips per reason,
`chargedEvents`, `freeTierRemaining`, `yieldByQuery`, `aiRejected`, `aiTokens`, `runSeconds`, `export`, and
`aiError` / `sourceError` when something failed.

### 🔁 Run it weekly

1. **Actions → Schedule** in the Console (weekly, your input saved as a Task).
2. Leave `dedupeAcrossRuns: true`. Every creator you were charged for is remembered, so each run delivers and
   charges **only new creators**, and `OUTPUT.newVsPrevious` compares with last week.
3. Add `digestWebhookUrl` or `notifyEmail` for the "7 new, 2 hot" message, and `exportPreset` or the Google Sheets
   integration so new creators land where you work.

Weekly cost is new creators only: ≈ 15 new × $0.01 + ≈ $0.35 source + ≈ $0.06 tokens ≈ **$0.56/week**. `OUTPUT.yieldByQuery`
shows the hashtags that found nobody, so you can drop them.

#### 🎯 Try it for your niche

Ready-made inputs in `storage-example/tasks/`. Paste one into the form (or open the public Task once published), run it
once, then schedule it.

| Niche | What it looks for | Task |
|---|---|---|
| Beauty / UGC seeding | `nichePreset: beauty`, 5k–100k followers, ≥ 1.5 % engagement, e-mail required | `beauty-ugc-creators` |
| Fitness on TikTok | `platform: tiktok`, `nichePreset: fitness`, 10k–300k, active in 30 days | `fitness-tiktok-creators` |
| Influencer audit | your `profiles`, `minScore: 0`, every creator back with the verdict | `audit-my-creator-list` |

### 🔌 Integrations, automation and API

- **Webhook**: `webhookUrl` POSTs each creator as `{"event": "creator.qualified", "creator": {…}}`, or batches as `creators.qualified` with `webhookBatchSize` > 1.
- **Instantly / Lemlist / HubSpot / Google Sheets**: set `exportPreset` and import `EXPORT.csv` from the run's key-value store as is. Sheets and Slack also work one click away in the **Integrations** tab.
- **Slack / Teams digest**: set `digestWebhookUrl` to an incoming-webhook URL.
- **AI agents / MCP**: every input is a plain typed field. **First call = the free trial**: `{"sourceMode": "list", "itemsList": [...]}` processes the records you send and runs nothing on your account. An empty `{}` fails with a message that says so.

```python
from apify_client import ApifyClient

client = ApifyClient("<YOUR_API_TOKEN>")
run = client.actor("rich_minds/instagram-creator-qualifier").call(run_input={
    "sourceMode": "list",  # free trial on your own records; switch to "actor" + "hashtags" to search
    "itemsList": [{"username": "skin.by.sam", "id": "1002", "followersCount": 45200,
                   "biography": "Business inquiries: hello@skinbysam.co", "latestPosts": []}],
    "goalDescription": "Skincare creators for a clean-beauty launch; honest reviews, brand-safe, reachable.",
    "maxQualified": 30,
    "maxDiscoveryChargeUsd": 0.5,  # spend cap on your account once you switch to "sourceMode": "actor"
})
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item["username"], item["engagementRate"], item["score"], item["contactChannel"])
```

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

const client = new ApifyClient({ token: '<YOUR_API_TOKEN>' });
const run = await client.actor('rich_minds/instagram-creator-qualifier').call({
    sourceMode: 'list', // free trial; switch to 'actor' + hashtags to search
    itemsList: [{ username: 'skin.by.sam', id: '1002', followersCount: 45200,
                  biography: 'Business inquiries: hello@skinbysam.co', latestPosts: [] }],
    goalDescription: 'Skincare creators for a clean-beauty launch; honest reviews, brand-safe, reachable.',
    maxQualified: 30,
    maxDiscoveryChargeUsd: 0.5, // spend cap on your account once you switch to sourceMode: 'actor'
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items.map((i) => [i.username, i.engagementRate, i.score, i.contactChannel]));
```

**Use it from Claude, ChatGPT or any MCP client.** Add Apify's MCP server with this Actor as a tool:

```json
{"mcpServers": {"apify": {"url": "https://mcp.apify.com/?actors=rich_minds/instagram-creator-qualifier"}}}
```

Then ask: *"Run instagram-creator-qualifier in `list` mode on these profiles first (free), show me the hot creators,
then search `#cleanbeauty` with `sourceMode: actor` and `maxDiscoveryChargeUsd: 0.5`."*

#### Run outcomes — what your integration sees

| Outcome | Run status | Dataset | `OUTPUT` | Charged? | What to do |
|---|---|---|---|---|---|
| Free demo (the pre-filled sample) | SUCCEEDED | sample creators, `chargedEvent: demo` | `demo: true` | no | switch the source and type your own terms |
| Success | SUCCEEDED | qualified creators, best first | funnel, `chargedEvents` | per qualified creator | — |
| Nothing matched | SUCCEEDED | empty | `qualified: 0`, `aiRejected` | no | loosen `minScore` / filters |
| Invalid input | FAILED | empty | — | no | fix the field the status message names |
| Source failed | FAILED | empty | `sourceError` | no | follow the reason (plan, timeout, `dataset` mode) |
| AI unavailable | SUCCEEDED | rule-scored creators | `aiError` | basic price | `llmProvider: byok` with your own key |

### 👥 Who is it for?

| You are… | You run it to… | Start with |
|---|---|---|
| Influencer-marketing agency | shortlist 30 brand-safe micro creators per client brief, weekly | `nichePreset` + `goalDescription` + `requireContact: email` |
| D2C brand running UGC / seeding | find UGC creators already posting about your niche, with an e-mail | `beauty-ugc-creators` Task |
| Brand checking a creator list | run an influencer audit for bought followers and bot comments before paying | `profiles` + `minScore: 0` |
| Growth team with lookalikes | find more creators like the three that converted | `lookalikeOf` |
| Creator-CRM / outreach tool builder | a scored, de-duplicated creator feed via API | `list` / `dataset` mode + webhook |

### 🧠 How the AI works

- **Grounded, not generative.** The model sees one creator at a time: profile facts, computed metrics, sample captions and comments. Every reason must name a field or quote the record. Brand-safety evidence must be a verbatim substring, and cold creators get no opener.
- **Your brief, not a generic score.** The fit score measures fit with your `goalDescription`, and the opener follows `outreachChannel` and `outreachTone` and names one real post. Placeholders such as `[Name]` are rejected.
- **Tokens only where they matter.** Only the best rule-scored candidates get the AI pass (`aiCandidateMultiplier` × `maxQualified`), bounded by `aiTimeBudgetSecs`.
- **Model access.** The default is `anthropic/claude-haiku-4.5` through Apify's model access, with no API key needed on plans that can run Store Actors. `llmProvider: "byok"` uses your own OpenAI, Anthropic, Gemini or Groq key.
- **Graceful fallback.** If the model is refused, the status says "AI unavailable: …" and `aiError` gives the reason. Creators keep their rule score and are charged at the basic price.

### 🔒 Data, compliance and limits

- Public profiles and public posts only, through the official Apify scrapers on your account: no login, no cookies, no follower lists. Private accounts are dropped and never charged.
- Contact data is limited to what the creator publishes (bio, captions, bio-link page). The output carries a bounded sample (3 URLs, 5 captions, 10 comments).
- Metrics come from a **sample** of recent posts. Treat `low_sample` / `no_profile_details` rows as indicative. Audience demographics are not in public data.
- Keep your use within Instagram's and TikTok's terms and applicable law (GDPR, CCPA): legitimate business outreach only.

### ❓ FAQ

**How much will one run cost me?** A search of 2 hashtags with AI on is ≈ $0.63 all in (≈ $0.35 Instagram Scraper on your account, $0.20 here, ≈ $0.08 tokens). The demo is free, and your first 25 qualified creators are free.

**Which Apify plan do I need?** Any plan runs the free demo. Searching (`actor` mode) and the built-in AI need a paid Apify plan that can run Store Actors. On the free plan, use `dataset` / `list` mode and `llmProvider: "byok"` with your own key. If the AI is refused, the status says "AI unavailable" and creators are charged at the basic price.

**What will my first real search cost?** 2 hashtags × 50 posts + details ≈ $0.35 on your account, capped by `maxDiscoveryChargeUsd` ($0.50 in the form, $2 by default for API calls). The first 25 qualified creators here are free.

**How is this different from Modash, HypeAuditor or Upfluence?** Those are SaaS seats: Modash starts at about $199/month, and HypeAuditor and Upfluence sell annual plans of several hundred dollars a month. They search a database that ages between refreshes. Here, 100 vetted creators with contact and an AI opener cost ≈ $3 in total (≈ $1.35 scraping + $1.00 here + ≈ $0.40 tokens), freshly scraped on every run, and there is no seat.

| | SaaS seat (Modash, HypeAuditor, Upfluence) | Instagram Scraper alone | This Actor |
|---|---|---|---|
| 100 vetted creators / month | from ≈ $199 | ≈ $1.89 for 700 raw rows, vetting by hand | ≈ $3 all in |
| Freshness | database refresh | live | live, only new creators each run |
| Contact + AI opener | contact yes, opener no | no | yes |

**Is this an Instagram scraper?** It runs Instagram Scraper (or TikTok Scraper) for you and turns the posts into vetted creators. You pay the scraper per result and pay here only per qualified creator.

**Can it check fake followers?** Yes: see [Vet a list you already have](#%EF%B8%8F-vet-a-list-you-already-have--fake-follower-check). The check uses `suspicious_ratio`, `audienceQuality` and generic-comment detection on public data.

**What happens if nothing matches my filters?** The run succeeds with 0 rows and charges nothing, and the status says why. If the AI scored the rules' picks below `minScore`, the status says so too.

**Will I be charged for the same creator twice?** Not with `dedupeAcrossRuns` on (the default). Use `dedupeStoreName` to keep campaigns apart.

**Can I use my own model?** Yes: `llmProvider: "byok"` plus `llmApiKey`, or any OpenRouter slug in `llmModel`.

**How long does a run take?** The demo takes ~10 s with rules and ~45 s with AI. A 2-hashtag search takes 3–6 minutes (estimate), mostly waiting on the scraper. From the API, `.call()` waits for it to finish.

**Is the data public / is this legal?** It uses public profiles and posts only, with no login, the same data anyone sees. You are responsible for how you contact creators.

**Can I schedule it?** Yes, see [Run it weekly](#-run-it-weekly). Cross-run memory means you pay only for new creators.

### 🧩 More Actors from the same developer

Not quite your use case? The same pay-per-qualified-result model, for other lead sources:

- **[Google Reviews Insights](https://apify.com/rich_minds/google-reviews-insights)**: google reviews analysis, complaints and praise per business, reputation management leads
- **[LinkedIn Intent Leads](https://apify.com/rich_minds/linkedin-intent-leads)**: linkedin buying intent, linkedin intent signals, social selling
- **[Local Business Lead](https://apify.com/rich_minds/local-business-lead)**: local business leads with contacts and a fit score

### 🆘 Support

Something missing or wrong? Open an issue on the Actor's page or message the developer through the Apify Console.
Requests from buyers are shipped first. On the roadmap: a `monitor` mode that re-checks creators you already hold,
YouTube Shorts as a third platform with one row per person across platforms, a free AI preview of the top 2 creators
in AI-off runs, a native HubSpot push, an `outcomes` input (replied / booked) reported per hashtag, and a separate
TikTok Influencer Finder listing.

### 📝 Changelog

One line per published build, newest first.

- **0.2** (2026-09-24): `exportPreset` (Instantly / Lemlist / HubSpot / Sheets CSV), `aiRejected` in OUTPUT and in the status, ready-made niche Tasks, influencer-audit mode documented, listing rewritten.
- **0.1.6** (2026-09-24): lookalike seeds, niche presets, Instagram / TikTok switch, audience quality, e-mail verification, weekly digest, free demo on sample records, spend cap default.
- **0.1.5** (2026-09-23): review fixes: keywords, listing image, cost table, weekly feed, FAQ, webhook payload.
- **0.1** (2026-09-22): initial release: creator aggregation, engagement metrics, free filters, AI fit score and opener, pay per qualified creator.

# Actor input Schema

## `sourceMode` (type: `string`):

Starts as a free demo on 18 sample records (nothing charged). For a real search choose Instagram / TikTok search and fill hashtags, a niche preset or lookalike seeds plus your Brand brief. 'Existing dataset' re-qualifies Instagram / TikTok Scraper results you already have.

## `platform` (type: `string`):

Which platform the search runs on. The same hashtags, profiles and lookalike seeds are mapped onto the matching Store scraper on your account; the creator row is identical.

## `nichePreset` (type: `string`):

Adds six proven hashtags for the niche to your own (e.g. Beauty → #skincareroutine, #cleanbeauty, …), so a first search never starts from a guess.

## `hashtags` (type: `array`):

Hashtags to search, without # (e.g. skincareroutine). Each one samples `postsPerSource` posts; the creators behind them are qualified, not the posts.

## `lookalikeOf` (type: `array`):

Usernames or profile URLs of creators you already like. Their profiles are looked up first; their most used hashtags and the accounts they mention become the search, their follower band (0.3×–3× the median) becomes the filter when you set none. The seeds themselves are not output.

## `goalDescription` (type: `string`):

Describe the ideal creator in plain words: niche, audience, tone, what the collaboration is. The AI scores every creator against this, explains why and writes the opener from it.

## `maxQualified` (type: `integer`):

Hard cap on qualified creators delivered (and so on what this Actor can charge). Best first.

## `minFollowers` (type: `integer`):

Drop creators below this follower count (free filter, needs profile details).

## `maxFollowers` (type: `integer`):

Drop creators above this follower count (free filter).

## `minEngagementRate` (type: `number`):

Average (likes + comments) per sampled post as a percentage of followers. 1–3 % is typical; 3 %+ is strong. Free filter, needs profile details.

## `activeWithinDays` (type: `integer`):

Drop creators whose latest sampled post is older than this. Leave empty to keep everyone.

## `requireContact` (type: `string`):

<b>none</b> — deliver everyone. <b>any</b> — a bio link or a contact invitation in the bio is required. <b>email</b> — an e-mail address must have been found (bio, caption or bio-link page).

## `verifyEmails` (type: `boolean`):

Checks each delivered creator's e-mail: syntax, MX record of the domain and shared role inboxes (info@, support@ …). Adds emailVerified and emailCheck to the row. No SMTP probing, nothing extra charged.

## `minScore` (type: `integer`):

Creators scoring below this are discarded and <b>not charged</b>. The default 45 delivers hot (≥ 70) and warm (45–69) creators.

## `mustMentionKeywords` (type: `array`):

Keep only creators whose bio, captions or hashtags contain at least one of these words (case-insensitive). Matching creators get the <code>keyword\_match</code> flag.

## `excludeKeywords` (type: `array`):

Drop creators whose bio, captions, hashtags or sample comments contain any of these words.

## `brandSafetyTopics` (type: `array`):

Words that, in addition to the built-in list (adult, gambling, weapons, hard drugs, hate), flag a creator as <code>brand\_safety\_keyword</code> and lower its score. The AI treats them as at least medium risk.

## `maxSponsoredShare` (type: `number`):

Drop creators whose sampled posts are more than this fraction ads / sponsored / gifted (e.g. <code>0.5</code>). Empty = no limit.

## `verifiedOnly` (type: `boolean`):

Keep only accounts with the verified badge (needs profile details).

## `businessAccountsOnly` (type: `boolean`):

Keep only Instagram business accounts (or TikTok Shop sellers).

## `minSampledPosts` (type: `integer`):

A creator must appear with at least this many posts before it is considered (metrics from one post are noise).

## `targetFlags` (type: `array`):

Only deliver creators that have at least one of these flags, and rank those with more of them higher. Leave empty to keep everything. Flags are listed in the README (e.g. <code>high\_engagement</code>, <code>email\_found</code>, <code>tier\_micro</code>).

## `suppressionList` (type: `array`):

Usernames (with or without <code>@</code>), profile URLs or ids never to output — creators you already work with. Skipped before any processing, never charged.

## `enableAi` (type: `boolean`):

Score each creator against your goal, explain why, summarise it and generate text. Off = rule-based flags and scores only (cheaper).

## `llmProvider` (type: `string`):

Apify model access needs no key: tokens go on your Apify bill at OpenRouter rates, on Apify plans that can run public Store Actors (the free plan cannot — there, pick 'My own API key'). If the AI is refused the run says 'AI unavailable' and charges the basic price.

## `llmApiKey` (type: `string`):

Required when <b>AI model access</b> is <i>My own API key</i>. Stored encrypted by Apify, never logged.

## `llmModel` (type: `string`):

Leave empty for the default (<code>anthropic/claude-haiku-4.5</code>). Apify mode takes an OpenRouter slug such as <code>openai/gpt-4.1-mini</code>; own-key mode takes <code>provider:model</code>, e.g. <code>anthropic:claude-haiku-4-5-20251001</code>.

## `outreachChannel` (type: `string`):

Whether the AI writes the opener as a DM or as the opening lines of an e-mail.

## `outreachTone` (type: `string`):

Tone for the generated opener, e.g. <code>friendly and concise</code>, <code>professional</code>, <code>playful</code>.

## `enrichBioLinks` (type: `boolean`):

Fetch each shortlisted creator's bio link once (8 s timeout) and pull an e-mail address / other social profiles from the page. Never charged; failures are ignored.

## `aiCandidateMultiplier` (type: `integer`):

How many of the best rule-scored candidates get the AI pass, as a multiple of <b>Max qualified</b>. Higher = more thorough, slower, more tokens.

## `aiTimeBudgetSecs` (type: `integer`):

The AI pass stops after this long (and always before the run timeout); creators not assessed by then keep their rule score and the basic price.

## `maxDiscoveryChargeUsd` (type: `number`):

Stops the source scraper once it has cost this much on your account (shared by every source call). The form starts at $0.50; an API / MCP call without it is capped at $2.

## `maxToProcess` (type: `integer`):

Upper bound on how many creators are scored in one run (controls run time). Default = 3 × max qualified.

## `dedupeAcrossRuns` (type: `boolean`):

Remembers every creator you were charged for (in a named key-value store on your account) and skips it in future runs.

## `dedupeStoreName` (type: `string`):

Key-value store used for cross-run memory. Use different names for different campaigns.

## `digestWebhookUrl` (type: `string`):

Posts one message per run with new creators — "7 new creators, 2 hot" plus the top 3 with links — to a Slack incoming webhook (or any URL). Sent only when something is new.

## `notifyEmail` (type: `string`):

Sends the same digest by e-mail through Apify's send-mail Actor on your account, only when the run delivered at least one new creator.

## `exportPreset` (type: `string`):

Also writes the qualified creators as <b>EXPORT.csv</b> (key-value store, Storage tab) with the columns your tool imports as is — no column mapping. Instantly and Lemlist get only creators with an e-mail address; the opener goes into the personalisation / icebreaker column.

## `webhookUrl` (type: `string`):

Qualified creators are POSTed here as JSON (Zapier, Make, n8n, your CRM). For Google Sheets / Slack you can also use Apify's built-in Integrations tab.

## `webhookHeaders` (type: `object`):

Extra HTTP headers for the webhook, e.g. <code>{"Authorization": "Bearer …"}</code>.

## `webhookBatchSize` (type: `integer`):

1 = one POST per creator the moment it is ready. Higher = one POST per N creators.

## `profiles` (type: `array`):

Usernames or profile URLs you already have. They go straight to a profile-details look-up (bio, followers, 12 latest posts).

## `datasetId` (type: `string`):

Only for <b>dataset</b> mode. Pick the dataset so the Actor is granted read access to it.

## `itemsList` (type: `array`):

Only for <b>list</b> mode. JSON array of Instagram Scraper post / reel / profile items or TikTok Scraper video items (see the README for the fields used).

## `places` (type: `array`):

Instagram location ids or <code>instagram.com/explore/locations/…</code> URLs — creators who tag these places.

## `searchQueries` (type: `array`):

Free-text search on Instagram (a separate source call, because the source cannot mix URLs and search). Combine with <b>Search type</b>.

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

What the search queries look for: users (creators), hashtags or places.

## `searchLimit` (type: `integer`):

How many users / hashtags / places a search query may return.

## `contentType` (type: `string`):

What the discovery call collects per hashtag / place: regular posts or reels.

## `postsPerSource` (type: `integer`):

Results limit per hashtag, place or query in the discovery call. Each result costs you $0.0027 on the source Actor.

## `postsNewerThan` (type: `string`):

Date (<code>YYYY-MM-DD</code>) or relative period (<code>90 days</code>, <code>2 months</code>) passed to the source Actor. Older posts are never fetched or paid for.

## `profilePostsLimit` (type: `integer`):

For <b>Profiles to qualify</b>: the profile look-up already returns the 12 latest posts; a higher number adds one extra posts call.

## `fetchProfileDetails` (type: `boolean`):

After the free filters, look up bio, follower count, verified / business status and the 12 latest posts for every remaining candidate (one source result per creator on your account). Off = follower-based metrics are missing and the creator carries <code>no\_profile\_details</code>.

## `hashtagsFromBrief` (type: `boolean`):

Only when no hashtag, profile, preset or seed is given: the Brand brief becomes the search (one short AI call → 6–8 niche hashtags; words from the brief when AI is off). Logged and listed in OUTPUT.searchFromBrief.

## `discoveryTimeoutSecs` (type: `integer`):

Maximum run time of each source call (discovery, search, profile details) in <b>actor</b> mode. A call that times out is reported in the run summary and the run continues with what was loaded.

## `discoveryActorId` (type: `string`):

Actor used in <b>actor</b> mode. Default <code>apify/instagram-scraper</code> (the hashtag / place / profile inputs are mapped for it). Any other Actor, e.g. <code>clockworks/tiktok-scraper</code>, is called once with <b>Source Actor input</b> as-is.

## `discoveryInput` (type: `object`):

Raw input merged into every source call as an override (see the source Actor's input schema). With the default Instagram Scraper you normally leave this empty and use the fields above.

## `proxyConfiguration` (type: `object`):

Apify Proxy for the optional bio-link check (the source Actor uses its own proxies).

## Actor input object example

```json
{
  "sourceMode": "list",
  "platform": "instagram",
  "nichePreset": "none",
  "goalDescription": "Skincare creators posting honest routines and product reviews, 10k–200k followers, active weekly, brand-safe, reachable by e-mail or DM, for a paid clean-beauty launch campaign.",
  "maxQualified": 100,
  "activeWithinDays": 60,
  "requireContact": "none",
  "verifyEmails": false,
  "minScore": 45,
  "verifiedOnly": false,
  "businessAccountsOnly": false,
  "minSampledPosts": 2,
  "enableAi": true,
  "llmProvider": "apify",
  "outreachChannel": "dm",
  "outreachTone": "friendly and concise",
  "enrichBioLinks": true,
  "aiCandidateMultiplier": 2,
  "aiTimeBudgetSecs": 600,
  "maxDiscoveryChargeUsd": 0.5,
  "dedupeAcrossRuns": true,
  "dedupeStoreName": "instagram-creator-qualifier-seen",
  "exportPreset": "none",
  "webhookBatchSize": 1,
  "itemsList": [
    {
      "inputUrl": "https://www.instagram.com/explore/tags/cleanbeauty/",
      "id": "39526044524073062",
      "type": "Video",
      "shortCode": "GLOW0020",
      "caption": "My 5-step evening routine for dry skin — honest review of the new ceramide serum ✨ #cleanbeauty #skincareroutine #dryskin",
      "hashtags": [
        "cleanbeauty",
        "skincareroutine",
        "dryskin"
      ],
      "mentions": [],
      "url": "https://www.instagram.com/p/GLOW0020/",
      "commentsCount": 96,
      "firstComment": "Love this routine, which serum is that?",
      "latestComments": [
        {
          "id": "0",
          "text": "Love this routine, which serum is that?",
          "ownerUsername": "fan0",
          "timestamp": "2026-09-19T14:24:00.000Z",
          "likesCount": 1
        },
        {
          "id": "1",
          "text": "The glow is real 😍",
          "ownerUsername": "fan1",
          "timestamp": "2026-09-19T14:24:00.000Z",
          "likesCount": 1
        },
        {
          "id": "2",
          "text": "Tried it — works on my dry skin too",
          "ownerUsername": "fan2",
          "timestamp": "2026-09-19T14:24:00.000Z",
          "likesCount": 1
        }
      ],
      "dimensionsHeight": 1350,
      "dimensionsWidth": 1080,
      "displayUrl": "https://scontent.cdninstagram.com/x.jpg",
      "images": [],
      "alt": null,
      "likesCount": 1840,
      "timestamp": "2026-09-19T12:00:00.000Z",
      "childPosts": [],
      "ownerFullName": "Maya Lindqvist",
      "ownerUsername": "glowwithmaya",
      "ownerId": "1001",
      "isPinned": false,
      "isCommentsDisabled": false,
      "productType": "clips",
      "videoViewCount": 41000,
      "videoPlayCount": 57399,
      "videoDuration": 23
    },
    {
      "inputUrl": "https://www.instagram.com/explore/tags/cleanbeauty/",
      "id": "39929491973621981",
      "type": "Image",
      "shortCode": "GLOW0060",
      "caption": "Ingredient breakdown: niacinamide vs azelaic acid. Save this one. #cleanbeauty #ingredients",
      "hashtags": [
        "cleanbeauty",
        "ingredients"
      ],
      "mentions": [],
      "url": "https://www.instagram.com/p/GLOW0060/",
      "commentsCount": 71,
      "firstComment": "Finally someone explains azelaic acid without selling me something",
      "latestComments": [
        {
          "id": "0",
          "text": "Finally someone explains azelaic acid without selling me something",
          "ownerUsername": "fan0",
          "timestamp": "2026-09-15T14:24:00.000Z",
          "likesCount": 1
        },
        {
          "id": "1",
          "text": "Saved! Can I layer this with vitamin C?",
          "ownerUsername": "fan1",
          "timestamp": "2026-09-15T14:24:00.000Z",
          "likesCount": 1
        },
        {
          "id": "2",
          "text": "which moisturiser do you use after?",
          "ownerUsername": "fan2",
          "timestamp": "2026-09-15T14:24:00.000Z",
          "likesCount": 1
        }
      ],
      "dimensionsHeight": 1350,
      "dimensionsWidth": 1080,
      "displayUrl": "https://scontent.cdninstagram.com/x.jpg",
      "images": [],
      "alt": null,
      "likesCount": 1520,
      "timestamp": "2026-09-15T12:00:00.000Z",
      "childPosts": [],
      "ownerFullName": "Maya Lindqvist",
      "ownerUsername": "glowwithmaya",
      "ownerId": "1001",
      "isPinned": false,
      "isCommentsDisabled": false
    },
    {
      "inputUrl": "https://www.instagram.com/explore/tags/cleanbeauty/",
      "id": "39091718840068626",
      "type": "Sidecar",
      "shortCode": "GLOW0110",
      "caption": "Before / after 8 weeks with the retinal I keep talking about. Not sponsored, bought with my own money. #skincareroutine",
      "hashtags": [
        "skincareroutine"
      ],
      "mentions": [
        "theordinary"
      ],
      "url": "https://www.instagram.com/p/GLOW0110/",
      "commentsCount": 143,
      "firstComment": "",
      "latestComments": [],
      "dimensionsHeight": 1350,
      "dimensionsWidth": 1080,
      "displayUrl": "https://scontent.cdninstagram.com/x.jpg",
      "images": [],
      "alt": null,
      "likesCount": 2210,
      "timestamp": "2026-09-10T12:00:00.000Z",
      "childPosts": [],
      "ownerFullName": "Maya Lindqvist",
      "ownerUsername": "glowwithmaya",
      "ownerId": "1001",
      "isPinned": false,
      "isCommentsDisabled": false
    },
    {
      "inputUrl": "https://www.instagram.com/explore/tags/cleanbeauty/",
      "id": "39032192664855005",
      "type": "Image",
      "shortCode": "GLOW2100",
      "caption": "Start here 👇 my full routine in one post #cleanbeauty",
      "hashtags": [
        "cleanbeauty"
      ],
      "mentions": [],
      "url": "https://www.instagram.com/p/GLOW2100/",
      "commentsCount": 410,
      "firstComment": "",
      "latestComments": [],
      "dimensionsHeight": 1350,
      "dimensionsWidth": 1080,
      "displayUrl": "https://scontent.cdninstagram.com/x.jpg",
      "images": [],
      "alt": null,
      "likesCount": 9800,
      "timestamp": "2026-02-23T12:00:00.000Z",
      "childPosts": [],
      "ownerFullName": "Maya Lindqvist",
      "ownerUsername": "glowwithmaya",
      "ownerId": "1001",
      "isPinned": true,
      "isCommentsDisabled": false
    },
    {
      "inputUrl": "https://www.instagram.com/explore/locations/212988663/london-united-kingdom/",
      "id": "39998609538550698",
      "type": "Image",
      "shortCode": "GLOW0160",
      "caption": "Clean beauty pop-up in Shoreditch — everything I tested #london #cleanbeauty",
      "hashtags": [
        "london",
        "cleanbeauty"
      ],
      "mentions": [],
      "url": "https://www.instagram.com/p/GLOW0160/",
      "commentsCount": 58,
      "firstComment": "",
      "latestComments": [],
      "dimensionsHeight": 1350,
      "dimensionsWidth": 1080,
      "displayUrl": "https://scontent.cdninstagram.com/x.jpg",
      "images": [],
      "alt": null,
      "likesCount": 1390,
      "timestamp": "2026-09-05T12:00:00.000Z",
      "childPosts": [],
      "ownerFullName": "Maya Lindqvist",
      "ownerUsername": "glowwithmaya",
      "ownerId": "1001",
      "isPinned": false,
      "isCommentsDisabled": false
    },
    {
      "inputUrl": "https://www.instagram.com/explore/tags/cleanbeauty/",
      "id": "39291044146123934",
      "type": "Image",
      "shortCode": "SKIN0040",
      "caption": "AD | Trying the new SPF from @sunbrand — paid partnership, honest thoughts inside #ad #cleanbeauty",
      "hashtags": [
        "ad",
        "cleanbeauty"
      ],
      "mentions": [
        "sunbrand"
      ],
      "url": "https://www.instagram.com/p/SKIN0040/",
      "commentsCount": 22,
      "firstComment": "",
      "latestComments": [],
      "dimensionsHeight": 1350,
      "dimensionsWidth": 1080,
      "displayUrl": "https://scontent.cdninstagram.com/x.jpg",
      "images": [],
      "alt": null,
      "likesCount": 640,
      "timestamp": "2026-09-17T12:00:00.000Z",
      "childPosts": [],
      "ownerFullName": "Sam Okafor",
      "ownerUsername": "skin.by.sam",
      "ownerId": "1002",
      "isPinned": false,
      "isCommentsDisabled": false
    },
    {
      "inputUrl": "https://www.instagram.com/explore/tags/cleanbeauty/",
      "id": "39334672068528884",
      "type": "Video",
      "shortCode": "SKIN0130",
      "caption": "Double cleansing explained in 60 seconds #skincareroutine #cleanbeauty",
      "hashtags": [
        "skincareroutine",
        "cleanbeauty"
      ],
      "mentions": [],
      "url": "https://www.instagram.com/p/SKIN0130/",
      "commentsCount": 35,
      "firstComment": "Double cleansing changed my skin honestly",
      "latestComments": [
        {
          "id": "0",
          "text": "Double cleansing changed my skin honestly",
          "ownerUsername": "fan0",
          "timestamp": "2026-09-08T14:24:00.000Z",
          "likesCount": 1
        },
        {
          "id": "1",
          "text": "nice",
          "ownerUsername": "fan1",
          "timestamp": "2026-09-08T14:24:00.000Z",
          "likesCount": 1
        },
        {
          "id": "2",
          "text": "Does this work for oily skin too?",
          "ownerUsername": "fan2",
          "timestamp": "2026-09-08T14:24:00.000Z",
          "likesCount": 1
        }
      ],
      "dimensionsHeight": 1350,
      "dimensionsWidth": 1080,
      "displayUrl": "https://scontent.cdninstagram.com/x.jpg",
      "images": [],
      "alt": null,
      "likesCount": 810,
      "timestamp": "2026-09-08T12:00:00.000Z",
      "childPosts": [],
      "ownerFullName": "Sam Okafor",
      "ownerUsername": "skin.by.sam",
      "ownerId": "1002",
      "isPinned": false,
      "isCommentsDisabled": false,
      "productType": "clips",
      "videoViewCount": 15400,
      "videoPlayCount": 21560,
      "videoDuration": 23
    },
    {
      "inputUrl": "https://www.instagram.com/explore/tags/cleanbeauty/",
      "id": "39350346900013190",
      "type": "Image",
      "shortCode": "SKIN0270",
      "caption": "Empties of the month — what I'd repurchase #cleanbeauty",
      "hashtags": [
        "cleanbeauty"
      ],
      "mentions": [],
      "url": "https://www.instagram.com/p/SKIN0270/",
      "commentsCount": 19,
      "firstComment": "Agree on the toner, repurchased twice",
      "latestComments": [
        {
          "id": "0",
          "text": "Agree on the toner, repurchased twice",
          "ownerUsername": "fan0",
          "timestamp": "2026-08-25T14:24:00.000Z",
          "likesCount": 1
        },
        {
          "id": "1",
          "text": "love it 😍",
          "ownerUsername": "fan1",
          "timestamp": "2026-08-25T14:24:00.000Z",
          "likesCount": 1
        }
      ],
      "dimensionsHeight": 1350,
      "dimensionsWidth": 1080,
      "displayUrl": "https://scontent.cdninstagram.com/x.jpg",
      "images": [],
      "alt": null,
      "likesCount": 590,
      "timestamp": "2026-08-25T12:00:00.000Z",
      "childPosts": [],
      "ownerFullName": "Sam Okafor",
      "ownerUsername": "skin.by.sam",
      "ownerId": "1002",
      "isPinned": false,
      "isCommentsDisabled": false
    },
    {
      "inputUrl": "https://www.instagram.com/explore/tags/cleanbeauty/",
      "id": "39774101418382598",
      "type": "Image",
      "shortCode": "DAIL0350",
      "caption": "New lab post: how pH affects your cleanser #cleanbeauty #skincarescience",
      "hashtags": [
        "cleanbeauty",
        "skincarescience"
      ],
      "mentions": [],
      "url": "https://www.instagram.com/p/DAIL0350/",
      "commentsCount": 3,
      "firstComment": "",
      "latestComments": [],
      "dimensionsHeight": 1350,
      "dimensionsWidth": 1080,
      "displayUrl": "https://scontent.cdninstagram.com/x.jpg",
      "images": [],
      "alt": null,
      "likesCount": 88,
      "timestamp": "2026-08-17T12:00:00.000Z",
      "childPosts": [],
      "ownerFullName": "Dailyglowlab",
      "ownerUsername": "dailyglowlab",
      "ownerId": "1003",
      "isPinned": false,
      "isCommentsDisabled": false
    },
    {
      "inputUrl": "https://www.instagram.com/explore/tags/cleanbeauty/",
      "id": "39734076919195563",
      "type": "Image",
      "shortCode": "DAIL0520",
      "caption": "Fragrance-free does not mean scent-free. Thread in comments. #cleanbeauty",
      "hashtags": [
        "cleanbeauty"
      ],
      "mentions": [],
      "url": "https://www.instagram.com/p/DAIL0520/",
      "commentsCount": 5,
      "firstComment": "",
      "latestComments": [],
      "dimensionsHeight": 1350,
      "dimensionsWidth": 1080,
      "displayUrl": "https://scontent.cdninstagram.com/x.jpg",
      "images": [],
      "alt": null,
      "likesCount": 102,
      "timestamp": "2026-07-31T12:00:00.000Z",
      "childPosts": [],
      "ownerFullName": "Dailyglowlab",
      "ownerUsername": "dailyglowlab",
      "ownerId": "1003",
      "isPinned": false,
      "isCommentsDisabled": false
    },
    {
      "inputUrl": "https://www.instagram.com/explore/tags/cleanbeauty/",
      "id": "39745924162730768",
      "type": "Image",
      "shortCode": "BIGB0010",
      "caption": "Our new launch is here #cleanbeauty",
      "hashtags": [
        "cleanbeauty"
      ],
      "mentions": [],
      "url": "https://www.instagram.com/p/BIGB0010/",
      "commentsCount": 310,
      "firstComment": "nice",
      "latestComments": [
        {
          "id": "0",
          "text": "nice",
          "ownerUsername": "fan0",
          "timestamp": "2026-09-20T14:24:00.000Z",
          "likesCount": 1
        },
        {
          "id": "1",
          "text": "DM us to collab! Send pic to @promo.page",
          "ownerUsername": "fan1",
          "timestamp": "2026-09-20T14:24:00.000Z",
          "likesCount": 1
        },
        {
          "id": "2",
          "text": "nice",
          "ownerUsername": "fan2",
          "timestamp": "2026-09-20T14:24:00.000Z",
          "likesCount": 1
        },
        {
          "id": "3",
          "text": "Promote it on @growth.page",
          "ownerUsername": "fan3",
          "timestamp": "2026-09-20T14:24:00.000Z",
          "likesCount": 1
        }
      ],
      "dimensionsHeight": 1350,
      "dimensionsWidth": 1080,
      "displayUrl": "https://scontent.cdninstagram.com/x.jpg",
      "images": [],
      "alt": null,
      "likesCount": 25000,
      "timestamp": "2026-09-20T12:00:00.000Z",
      "childPosts": [],
      "ownerFullName": "BigBrand Beauty",
      "ownerUsername": "bigbrandbeauty",
      "ownerId": "1004",
      "isPinned": false,
      "isCommentsDisabled": false
    },
    {
      "inputUrl": "https://www.instagram.com/explore/locations/212988663/london-united-kingdom/",
      "id": "39042476886006904",
      "type": "Image",
      "shortCode": "NIGH0030",
      "caption": "Casino night in London — join the betting tips group in bio 🎰 #london #casino",
      "hashtags": [
        "london",
        "casino"
      ],
      "mentions": [],
      "url": "https://www.instagram.com/p/NIGH0030/",
      "commentsCount": 12,
      "firstComment": "",
      "latestComments": [],
      "dimensionsHeight": 1350,
      "dimensionsWidth": 1080,
      "displayUrl": "https://scontent.cdninstagram.com/x.jpg",
      "images": [],
      "alt": null,
      "likesCount": 430,
      "timestamp": "2026-09-18T12:00:00.000Z",
      "childPosts": [],
      "ownerFullName": "Nightlife Vibes",
      "ownerUsername": "nightlife.vibes",
      "ownerId": "1005",
      "isPinned": false,
      "isCommentsDisabled": false
    },
    {
      "inputUrl": "https://www.instagram.com/explore/locations/212988663/london-united-kingdom/",
      "id": "39352282574848419",
      "type": "Image",
      "shortCode": "NIGH0090",
      "caption": "Weekend recap #london #nightlife",
      "hashtags": [
        "london",
        "nightlife"
      ],
      "mentions": [],
      "url": "https://www.instagram.com/p/NIGH0090/",
      "commentsCount": 9,
      "firstComment": "",
      "latestComments": [],
      "dimensionsHeight": 1350,
      "dimensionsWidth": 1080,
      "displayUrl": "https://scontent.cdninstagram.com/x.jpg",
      "images": [],
      "alt": null,
      "likesCount": 380,
      "timestamp": "2026-09-12T12:00:00.000Z",
      "childPosts": [],
      "ownerFullName": "Nightlife Vibes",
      "ownerUsername": "nightlife.vibes",
      "ownerId": "1005",
      "isPinned": false,
      "isCommentsDisabled": false
    },
    {
      "inputUrl": "https://www.instagram.com/skin.by.sam/",
      "id": "1002",
      "username": "skin.by.sam",
      "url": "https://www.instagram.com/skin.by.sam",
      "fullName": "Sam Okafor",
      "biography": "Skincare without the fluff 🧴 Business inquiries: hello@skinbysam.co · collabs open",
      "externalUrls": [
        {
          "title": "",
          "url": "https://linktr.ee/skinbysam",
          "link_type": "external"
        }
      ],
      "externalUrl": "https://linktr.ee/skinbysam",
      "followersCount": 45200,
      "followsCount": 512,
      "highlightReelCount": 3,
      "isBusinessAccount": true,
      "joinedRecently": false,
      "businessCategoryName": "Digital creator",
      "private": false,
      "verified": false,
      "profilePicUrl": "https://scontent.cdninstagram.com/p.jpg",
      "profilePicUrlHD": "https://scontent.cdninstagram.com/p.jpg",
      "igtvVideoCount": 0,
      "postsCount": 412,
      "fbid": "1784",
      "latestPosts": [
        {
          "inputUrl": "https://www.instagram.com/skin.by.sam/",
          "id": "39125761352924710",
          "type": "Image",
          "shortCode": "SKIN0005",
          "caption": "Sunday reset #skincareroutine",
          "hashtags": [
            "skincareroutine"
          ],
          "mentions": [],
          "url": "https://www.instagram.com/p/SKIN0005/",
          "commentsCount": 30,
          "firstComment": "",
          "latestComments": [],
          "dimensionsHeight": 1350,
          "dimensionsWidth": 1080,
          "displayUrl": "https://scontent.cdninstagram.com/x.jpg",
          "images": [],
          "alt": null,
          "likesCount": 700,
          "timestamp": "2026-09-21T00:00:00.000Z",
          "childPosts": [],
          "ownerFullName": "Sam Okafor",
          "ownerUsername": "skin.by.sam",
          "ownerId": "1002",
          "isPinned": false,
          "isCommentsDisabled": false
        }
      ]
    },
    {
      "id": "749595475059841487",
      "text": "3 drugstore products that beat luxury skincare #skincare #cleanbeauty #dupes",
      "textLanguage": "en",
      "createTime": 1789560000,
      "createTimeISO": "2026-09-16T12:00:00.000Z",
      "isAd": false,
      "isSponsored": false,
      "isPinned": false,
      "authorMeta": {
        "id": "6812",
        "name": "glow_by_jules",
        "profileUrl": "https://www.tiktok.com/@glow_by_jules",
        "nickName": "Glow By Jules",
        "verified": false,
        "signature": "skincare on a budget 💧 collabs: jules.creator@gmail.com",
        "bioLink": "https://beacons.ai/glowbyjules",
        "privateAccount": false,
        "ttSeller": false,
        "fans": 88000,
        "heart": 1056000,
        "video": 230,
        "digg": 1200,
        "following": 300
      },
      "webVideoUrl": "https://www.tiktok.com/@glow_by_jules/video/749595475059841487",
      "diggCount": 18400,
      "shareCount": 1900,
      "playCount": 210000,
      "collectCount": 1840,
      "commentCount": 620,
      "hashtags": [
        {
          "id": "0",
          "name": "skincare",
          "title": "skincare"
        },
        {
          "id": "1",
          "name": "cleanbeauty",
          "title": "cleanbeauty"
        },
        {
          "id": "2",
          "name": "dupes",
          "title": "dupes"
        }
      ],
      "videoMeta": {
        "height": 1024,
        "width": 576,
        "duration": 31
      },
      "searchQuery": "skincare routine"
    },
    {
      "id": "796889321002805530",
      "text": "Retinol for beginners — what nobody tells you #skincare #retinol",
      "textLanguage": "en",
      "createTime": 1788955200,
      "createTimeISO": "2026-09-09T12:00:00.000Z",
      "isAd": false,
      "isSponsored": false,
      "isPinned": false,
      "authorMeta": {
        "id": "6812",
        "name": "glow_by_jules",
        "profileUrl": "https://www.tiktok.com/@glow_by_jules",
        "nickName": "Glow By Jules",
        "verified": false,
        "signature": "skincare on a budget 💧 collabs: jules.creator@gmail.com",
        "bioLink": "https://beacons.ai/glowbyjules",
        "privateAccount": false,
        "ttSeller": false,
        "fans": 88000,
        "heart": 1056000,
        "video": 230,
        "digg": 1200,
        "following": 300
      },
      "webVideoUrl": "https://www.tiktok.com/@glow_by_jules/video/796889321002805530",
      "diggCount": 7100,
      "shareCount": 640,
      "playCount": 95000,
      "collectCount": 710,
      "commentCount": 210,
      "hashtags": [
        {
          "id": "0",
          "name": "skincare",
          "title": "skincare"
        },
        {
          "id": "1",
          "name": "retinol",
          "title": "retinol"
        }
      ],
      "videoMeta": {
        "height": 1024,
        "width": 576,
        "duration": 31
      },
      "searchQuery": "skincare routine"
    },
    {
      "inputUrl": "https://www.instagram.com/private.person/",
      "error": "not_found",
      "errorDescription": "Page not found or private"
    },
    {
      "inputUrl": "https://www.instagram.com/explore/tags/cleanbeauty/",
      "id": "17841563",
      "name": "cleanbeauty",
      "postsCount": 14200000,
      "url": "https://www.instagram.com/explore/tags/cleanbeauty/",
      "topPosts": []
    }
  ],
  "searchType": "user",
  "searchLimit": 20,
  "contentType": "posts",
  "postsPerSource": 50,
  "postsNewerThan": "90 days",
  "profilePostsLimit": 12,
  "fetchProfileDetails": true,
  "hashtagsFromBrief": true,
  "discoveryTimeoutSecs": 3600,
  "discoveryActorId": "apify/instagram-scraper",
  "discoveryInput": {},
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}
```

# Actor output Schema

## `qualified` (type: `string`):

All qualified creators as JSON, best-scoring first.

## `sheet` (type: `string`):

The same creators as a spreadsheet.

## `export` (type: `string`):

Written when exportPreset is set: the qualified creators with the columns Instantly, Lemlist, HubSpot or Google Sheets import as is.

## `runSummary` (type: `string`):

JSON record with the funnel (loaded -> filtered -> AI-assessed -> qualified), per-reason skip counts, charged events by type, free-tier creators used and remaining, whether a budget limit was reached, webhook delivery counts and the dedupe store size.

# 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 = {
    "sourceMode": "list",
    "goalDescription": "Skincare creators posting honest routines and product reviews, 10k–200k followers, active weekly, brand-safe, reachable by e-mail or DM, for a paid clean-beauty launch campaign.",
    "maxDiscoveryChargeUsd": 0.5,
    "itemsList": [
        {
            "inputUrl": "https://www.instagram.com/explore/tags/cleanbeauty/",
            "id": "39526044524073062",
            "type": "Video",
            "shortCode": "GLOW0020",
            "caption": "My 5-step evening routine for dry skin — honest review of the new ceramide serum ✨ #cleanbeauty #skincareroutine #dryskin",
            "hashtags": [
                "cleanbeauty",
                "skincareroutine",
                "dryskin"
            ],
            "mentions": [],
            "url": "https://www.instagram.com/p/GLOW0020/",
            "commentsCount": 96,
            "firstComment": "Love this routine, which serum is that?",
            "latestComments": [
                {
                    "id": "0",
                    "text": "Love this routine, which serum is that?",
                    "ownerUsername": "fan0",
                    "timestamp": "2026-09-19T14:24:00.000Z",
                    "likesCount": 1
                },
                {
                    "id": "1",
                    "text": "The glow is real 😍",
                    "ownerUsername": "fan1",
                    "timestamp": "2026-09-19T14:24:00.000Z",
                    "likesCount": 1
                },
                {
                    "id": "2",
                    "text": "Tried it — works on my dry skin too",
                    "ownerUsername": "fan2",
                    "timestamp": "2026-09-19T14:24:00.000Z",
                    "likesCount": 1
                }
            ],
            "dimensionsHeight": 1350,
            "dimensionsWidth": 1080,
            "displayUrl": "https://scontent.cdninstagram.com/x.jpg",
            "images": [],
            "alt": null,
            "likesCount": 1840,
            "timestamp": "2026-09-19T12:00:00.000Z",
            "childPosts": [],
            "ownerFullName": "Maya Lindqvist",
            "ownerUsername": "glowwithmaya",
            "ownerId": "1001",
            "isPinned": false,
            "isCommentsDisabled": false,
            "productType": "clips",
            "videoViewCount": 41000,
            "videoPlayCount": 57399,
            "videoDuration": 23
        },
        {
            "inputUrl": "https://www.instagram.com/explore/tags/cleanbeauty/",
            "id": "39929491973621981",
            "type": "Image",
            "shortCode": "GLOW0060",
            "caption": "Ingredient breakdown: niacinamide vs azelaic acid. Save this one. #cleanbeauty #ingredients",
            "hashtags": [
                "cleanbeauty",
                "ingredients"
            ],
            "mentions": [],
            "url": "https://www.instagram.com/p/GLOW0060/",
            "commentsCount": 71,
            "firstComment": "Finally someone explains azelaic acid without selling me something",
            "latestComments": [
                {
                    "id": "0",
                    "text": "Finally someone explains azelaic acid without selling me something",
                    "ownerUsername": "fan0",
                    "timestamp": "2026-09-15T14:24:00.000Z",
                    "likesCount": 1
                },
                {
                    "id": "1",
                    "text": "Saved! Can I layer this with vitamin C?",
                    "ownerUsername": "fan1",
                    "timestamp": "2026-09-15T14:24:00.000Z",
                    "likesCount": 1
                },
                {
                    "id": "2",
                    "text": "which moisturiser do you use after?",
                    "ownerUsername": "fan2",
                    "timestamp": "2026-09-15T14:24:00.000Z",
                    "likesCount": 1
                }
            ],
            "dimensionsHeight": 1350,
            "dimensionsWidth": 1080,
            "displayUrl": "https://scontent.cdninstagram.com/x.jpg",
            "images": [],
            "alt": null,
            "likesCount": 1520,
            "timestamp": "2026-09-15T12:00:00.000Z",
            "childPosts": [],
            "ownerFullName": "Maya Lindqvist",
            "ownerUsername": "glowwithmaya",
            "ownerId": "1001",
            "isPinned": false,
            "isCommentsDisabled": false
        },
        {
            "inputUrl": "https://www.instagram.com/explore/tags/cleanbeauty/",
            "id": "39091718840068626",
            "type": "Sidecar",
            "shortCode": "GLOW0110",
            "caption": "Before / after 8 weeks with the retinal I keep talking about. Not sponsored, bought with my own money. #skincareroutine",
            "hashtags": [
                "skincareroutine"
            ],
            "mentions": [
                "theordinary"
            ],
            "url": "https://www.instagram.com/p/GLOW0110/",
            "commentsCount": 143,
            "firstComment": "",
            "latestComments": [],
            "dimensionsHeight": 1350,
            "dimensionsWidth": 1080,
            "displayUrl": "https://scontent.cdninstagram.com/x.jpg",
            "images": [],
            "alt": null,
            "likesCount": 2210,
            "timestamp": "2026-09-10T12:00:00.000Z",
            "childPosts": [],
            "ownerFullName": "Maya Lindqvist",
            "ownerUsername": "glowwithmaya",
            "ownerId": "1001",
            "isPinned": false,
            "isCommentsDisabled": false
        },
        {
            "inputUrl": "https://www.instagram.com/explore/tags/cleanbeauty/",
            "id": "39032192664855005",
            "type": "Image",
            "shortCode": "GLOW2100",
            "caption": "Start here 👇 my full routine in one post #cleanbeauty",
            "hashtags": [
                "cleanbeauty"
            ],
            "mentions": [],
            "url": "https://www.instagram.com/p/GLOW2100/",
            "commentsCount": 410,
            "firstComment": "",
            "latestComments": [],
            "dimensionsHeight": 1350,
            "dimensionsWidth": 1080,
            "displayUrl": "https://scontent.cdninstagram.com/x.jpg",
            "images": [],
            "alt": null,
            "likesCount": 9800,
            "timestamp": "2026-02-23T12:00:00.000Z",
            "childPosts": [],
            "ownerFullName": "Maya Lindqvist",
            "ownerUsername": "glowwithmaya",
            "ownerId": "1001",
            "isPinned": true,
            "isCommentsDisabled": false
        },
        {
            "inputUrl": "https://www.instagram.com/explore/locations/212988663/london-united-kingdom/",
            "id": "39998609538550698",
            "type": "Image",
            "shortCode": "GLOW0160",
            "caption": "Clean beauty pop-up in Shoreditch — everything I tested #london #cleanbeauty",
            "hashtags": [
                "london",
                "cleanbeauty"
            ],
            "mentions": [],
            "url": "https://www.instagram.com/p/GLOW0160/",
            "commentsCount": 58,
            "firstComment": "",
            "latestComments": [],
            "dimensionsHeight": 1350,
            "dimensionsWidth": 1080,
            "displayUrl": "https://scontent.cdninstagram.com/x.jpg",
            "images": [],
            "alt": null,
            "likesCount": 1390,
            "timestamp": "2026-09-05T12:00:00.000Z",
            "childPosts": [],
            "ownerFullName": "Maya Lindqvist",
            "ownerUsername": "glowwithmaya",
            "ownerId": "1001",
            "isPinned": false,
            "isCommentsDisabled": false
        },
        {
            "inputUrl": "https://www.instagram.com/explore/tags/cleanbeauty/",
            "id": "39291044146123934",
            "type": "Image",
            "shortCode": "SKIN0040",
            "caption": "AD | Trying the new SPF from @sunbrand — paid partnership, honest thoughts inside #ad #cleanbeauty",
            "hashtags": [
                "ad",
                "cleanbeauty"
            ],
            "mentions": [
                "sunbrand"
            ],
            "url": "https://www.instagram.com/p/SKIN0040/",
            "commentsCount": 22,
            "firstComment": "",
            "latestComments": [],
            "dimensionsHeight": 1350,
            "dimensionsWidth": 1080,
            "displayUrl": "https://scontent.cdninstagram.com/x.jpg",
            "images": [],
            "alt": null,
            "likesCount": 640,
            "timestamp": "2026-09-17T12:00:00.000Z",
            "childPosts": [],
            "ownerFullName": "Sam Okafor",
            "ownerUsername": "skin.by.sam",
            "ownerId": "1002",
            "isPinned": false,
            "isCommentsDisabled": false
        },
        {
            "inputUrl": "https://www.instagram.com/explore/tags/cleanbeauty/",
            "id": "39334672068528884",
            "type": "Video",
            "shortCode": "SKIN0130",
            "caption": "Double cleansing explained in 60 seconds #skincareroutine #cleanbeauty",
            "hashtags": [
                "skincareroutine",
                "cleanbeauty"
            ],
            "mentions": [],
            "url": "https://www.instagram.com/p/SKIN0130/",
            "commentsCount": 35,
            "firstComment": "Double cleansing changed my skin honestly",
            "latestComments": [
                {
                    "id": "0",
                    "text": "Double cleansing changed my skin honestly",
                    "ownerUsername": "fan0",
                    "timestamp": "2026-09-08T14:24:00.000Z",
                    "likesCount": 1
                },
                {
                    "id": "1",
                    "text": "nice",
                    "ownerUsername": "fan1",
                    "timestamp": "2026-09-08T14:24:00.000Z",
                    "likesCount": 1
                },
                {
                    "id": "2",
                    "text": "Does this work for oily skin too?",
                    "ownerUsername": "fan2",
                    "timestamp": "2026-09-08T14:24:00.000Z",
                    "likesCount": 1
                }
            ],
            "dimensionsHeight": 1350,
            "dimensionsWidth": 1080,
            "displayUrl": "https://scontent.cdninstagram.com/x.jpg",
            "images": [],
            "alt": null,
            "likesCount": 810,
            "timestamp": "2026-09-08T12:00:00.000Z",
            "childPosts": [],
            "ownerFullName": "Sam Okafor",
            "ownerUsername": "skin.by.sam",
            "ownerId": "1002",
            "isPinned": false,
            "isCommentsDisabled": false,
            "productType": "clips",
            "videoViewCount": 15400,
            "videoPlayCount": 21560,
            "videoDuration": 23
        },
        {
            "inputUrl": "https://www.instagram.com/explore/tags/cleanbeauty/",
            "id": "39350346900013190",
            "type": "Image",
            "shortCode": "SKIN0270",
            "caption": "Empties of the month — what I'd repurchase #cleanbeauty",
            "hashtags": [
                "cleanbeauty"
            ],
            "mentions": [],
            "url": "https://www.instagram.com/p/SKIN0270/",
            "commentsCount": 19,
            "firstComment": "Agree on the toner, repurchased twice",
            "latestComments": [
                {
                    "id": "0",
                    "text": "Agree on the toner, repurchased twice",
                    "ownerUsername": "fan0",
                    "timestamp": "2026-08-25T14:24:00.000Z",
                    "likesCount": 1
                },
                {
                    "id": "1",
                    "text": "love it 😍",
                    "ownerUsername": "fan1",
                    "timestamp": "2026-08-25T14:24:00.000Z",
                    "likesCount": 1
                }
            ],
            "dimensionsHeight": 1350,
            "dimensionsWidth": 1080,
            "displayUrl": "https://scontent.cdninstagram.com/x.jpg",
            "images": [],
            "alt": null,
            "likesCount": 590,
            "timestamp": "2026-08-25T12:00:00.000Z",
            "childPosts": [],
            "ownerFullName": "Sam Okafor",
            "ownerUsername": "skin.by.sam",
            "ownerId": "1002",
            "isPinned": false,
            "isCommentsDisabled": false
        },
        {
            "inputUrl": "https://www.instagram.com/explore/tags/cleanbeauty/",
            "id": "39774101418382598",
            "type": "Image",
            "shortCode": "DAIL0350",
            "caption": "New lab post: how pH affects your cleanser #cleanbeauty #skincarescience",
            "hashtags": [
                "cleanbeauty",
                "skincarescience"
            ],
            "mentions": [],
            "url": "https://www.instagram.com/p/DAIL0350/",
            "commentsCount": 3,
            "firstComment": "",
            "latestComments": [],
            "dimensionsHeight": 1350,
            "dimensionsWidth": 1080,
            "displayUrl": "https://scontent.cdninstagram.com/x.jpg",
            "images": [],
            "alt": null,
            "likesCount": 88,
            "timestamp": "2026-08-17T12:00:00.000Z",
            "childPosts": [],
            "ownerFullName": "Dailyglowlab",
            "ownerUsername": "dailyglowlab",
            "ownerId": "1003",
            "isPinned": false,
            "isCommentsDisabled": false
        },
        {
            "inputUrl": "https://www.instagram.com/explore/tags/cleanbeauty/",
            "id": "39734076919195563",
            "type": "Image",
            "shortCode": "DAIL0520",
            "caption": "Fragrance-free does not mean scent-free. Thread in comments. #cleanbeauty",
            "hashtags": [
                "cleanbeauty"
            ],
            "mentions": [],
            "url": "https://www.instagram.com/p/DAIL0520/",
            "commentsCount": 5,
            "firstComment": "",
            "latestComments": [],
            "dimensionsHeight": 1350,
            "dimensionsWidth": 1080,
            "displayUrl": "https://scontent.cdninstagram.com/x.jpg",
            "images": [],
            "alt": null,
            "likesCount": 102,
            "timestamp": "2026-07-31T12:00:00.000Z",
            "childPosts": [],
            "ownerFullName": "Dailyglowlab",
            "ownerUsername": "dailyglowlab",
            "ownerId": "1003",
            "isPinned": false,
            "isCommentsDisabled": false
        },
        {
            "inputUrl": "https://www.instagram.com/explore/tags/cleanbeauty/",
            "id": "39745924162730768",
            "type": "Image",
            "shortCode": "BIGB0010",
            "caption": "Our new launch is here #cleanbeauty",
            "hashtags": [
                "cleanbeauty"
            ],
            "mentions": [],
            "url": "https://www.instagram.com/p/BIGB0010/",
            "commentsCount": 310,
            "firstComment": "nice",
            "latestComments": [
                {
                    "id": "0",
                    "text": "nice",
                    "ownerUsername": "fan0",
                    "timestamp": "2026-09-20T14:24:00.000Z",
                    "likesCount": 1
                },
                {
                    "id": "1",
                    "text": "DM us to collab! Send pic to @promo.page",
                    "ownerUsername": "fan1",
                    "timestamp": "2026-09-20T14:24:00.000Z",
                    "likesCount": 1
                },
                {
                    "id": "2",
                    "text": "nice",
                    "ownerUsername": "fan2",
                    "timestamp": "2026-09-20T14:24:00.000Z",
                    "likesCount": 1
                },
                {
                    "id": "3",
                    "text": "Promote it on @growth.page",
                    "ownerUsername": "fan3",
                    "timestamp": "2026-09-20T14:24:00.000Z",
                    "likesCount": 1
                }
            ],
            "dimensionsHeight": 1350,
            "dimensionsWidth": 1080,
            "displayUrl": "https://scontent.cdninstagram.com/x.jpg",
            "images": [],
            "alt": null,
            "likesCount": 25000,
            "timestamp": "2026-09-20T12:00:00.000Z",
            "childPosts": [],
            "ownerFullName": "BigBrand Beauty",
            "ownerUsername": "bigbrandbeauty",
            "ownerId": "1004",
            "isPinned": false,
            "isCommentsDisabled": false
        },
        {
            "inputUrl": "https://www.instagram.com/explore/locations/212988663/london-united-kingdom/",
            "id": "39042476886006904",
            "type": "Image",
            "shortCode": "NIGH0030",
            "caption": "Casino night in London — join the betting tips group in bio 🎰 #london #casino",
            "hashtags": [
                "london",
                "casino"
            ],
            "mentions": [],
            "url": "https://www.instagram.com/p/NIGH0030/",
            "commentsCount": 12,
            "firstComment": "",
            "latestComments": [],
            "dimensionsHeight": 1350,
            "dimensionsWidth": 1080,
            "displayUrl": "https://scontent.cdninstagram.com/x.jpg",
            "images": [],
            "alt": null,
            "likesCount": 430,
            "timestamp": "2026-09-18T12:00:00.000Z",
            "childPosts": [],
            "ownerFullName": "Nightlife Vibes",
            "ownerUsername": "nightlife.vibes",
            "ownerId": "1005",
            "isPinned": false,
            "isCommentsDisabled": false
        },
        {
            "inputUrl": "https://www.instagram.com/explore/locations/212988663/london-united-kingdom/",
            "id": "39352282574848419",
            "type": "Image",
            "shortCode": "NIGH0090",
            "caption": "Weekend recap #london #nightlife",
            "hashtags": [
                "london",
                "nightlife"
            ],
            "mentions": [],
            "url": "https://www.instagram.com/p/NIGH0090/",
            "commentsCount": 9,
            "firstComment": "",
            "latestComments": [],
            "dimensionsHeight": 1350,
            "dimensionsWidth": 1080,
            "displayUrl": "https://scontent.cdninstagram.com/x.jpg",
            "images": [],
            "alt": null,
            "likesCount": 380,
            "timestamp": "2026-09-12T12:00:00.000Z",
            "childPosts": [],
            "ownerFullName": "Nightlife Vibes",
            "ownerUsername": "nightlife.vibes",
            "ownerId": "1005",
            "isPinned": false,
            "isCommentsDisabled": false
        },
        {
            "inputUrl": "https://www.instagram.com/skin.by.sam/",
            "id": "1002",
            "username": "skin.by.sam",
            "url": "https://www.instagram.com/skin.by.sam",
            "fullName": "Sam Okafor",
            "biography": "Skincare without the fluff 🧴 Business inquiries: hello@skinbysam.co · collabs open",
            "externalUrls": [
                {
                    "title": "",
                    "url": "https://linktr.ee/skinbysam",
                    "link_type": "external"
                }
            ],
            "externalUrl": "https://linktr.ee/skinbysam",
            "followersCount": 45200,
            "followsCount": 512,
            "highlightReelCount": 3,
            "isBusinessAccount": true,
            "joinedRecently": false,
            "businessCategoryName": "Digital creator",
            "private": false,
            "verified": false,
            "profilePicUrl": "https://scontent.cdninstagram.com/p.jpg",
            "profilePicUrlHD": "https://scontent.cdninstagram.com/p.jpg",
            "igtvVideoCount": 0,
            "postsCount": 412,
            "fbid": "1784",
            "latestPosts": [
                {
                    "inputUrl": "https://www.instagram.com/skin.by.sam/",
                    "id": "39125761352924710",
                    "type": "Image",
                    "shortCode": "SKIN0005",
                    "caption": "Sunday reset #skincareroutine",
                    "hashtags": [
                        "skincareroutine"
                    ],
                    "mentions": [],
                    "url": "https://www.instagram.com/p/SKIN0005/",
                    "commentsCount": 30,
                    "firstComment": "",
                    "latestComments": [],
                    "dimensionsHeight": 1350,
                    "dimensionsWidth": 1080,
                    "displayUrl": "https://scontent.cdninstagram.com/x.jpg",
                    "images": [],
                    "alt": null,
                    "likesCount": 700,
                    "timestamp": "2026-09-21T00:00:00.000Z",
                    "childPosts": [],
                    "ownerFullName": "Sam Okafor",
                    "ownerUsername": "skin.by.sam",
                    "ownerId": "1002",
                    "isPinned": false,
                    "isCommentsDisabled": false
                }
            ]
        },
        {
            "id": "749595475059841487",
            "text": "3 drugstore products that beat luxury skincare #skincare #cleanbeauty #dupes",
            "textLanguage": "en",
            "createTime": 1789560000,
            "createTimeISO": "2026-09-16T12:00:00.000Z",
            "isAd": false,
            "isSponsored": false,
            "isPinned": false,
            "authorMeta": {
                "id": "6812",
                "name": "glow_by_jules",
                "profileUrl": "https://www.tiktok.com/@glow_by_jules",
                "nickName": "Glow By Jules",
                "verified": false,
                "signature": "skincare on a budget 💧 collabs: jules.creator@gmail.com",
                "bioLink": "https://beacons.ai/glowbyjules",
                "privateAccount": false,
                "ttSeller": false,
                "fans": 88000,
                "heart": 1056000,
                "video": 230,
                "digg": 1200,
                "following": 300
            },
            "webVideoUrl": "https://www.tiktok.com/@glow_by_jules/video/749595475059841487",
            "diggCount": 18400,
            "shareCount": 1900,
            "playCount": 210000,
            "collectCount": 1840,
            "commentCount": 620,
            "hashtags": [
                {
                    "id": "0",
                    "name": "skincare",
                    "title": "skincare"
                },
                {
                    "id": "1",
                    "name": "cleanbeauty",
                    "title": "cleanbeauty"
                },
                {
                    "id": "2",
                    "name": "dupes",
                    "title": "dupes"
                }
            ],
            "videoMeta": {
                "height": 1024,
                "width": 576,
                "duration": 31
            },
            "searchQuery": "skincare routine"
        },
        {
            "id": "796889321002805530",
            "text": "Retinol for beginners — what nobody tells you #skincare #retinol",
            "textLanguage": "en",
            "createTime": 1788955200,
            "createTimeISO": "2026-09-09T12:00:00.000Z",
            "isAd": false,
            "isSponsored": false,
            "isPinned": false,
            "authorMeta": {
                "id": "6812",
                "name": "glow_by_jules",
                "profileUrl": "https://www.tiktok.com/@glow_by_jules",
                "nickName": "Glow By Jules",
                "verified": false,
                "signature": "skincare on a budget 💧 collabs: jules.creator@gmail.com",
                "bioLink": "https://beacons.ai/glowbyjules",
                "privateAccount": false,
                "ttSeller": false,
                "fans": 88000,
                "heart": 1056000,
                "video": 230,
                "digg": 1200,
                "following": 300
            },
            "webVideoUrl": "https://www.tiktok.com/@glow_by_jules/video/796889321002805530",
            "diggCount": 7100,
            "shareCount": 640,
            "playCount": 95000,
            "collectCount": 710,
            "commentCount": 210,
            "hashtags": [
                {
                    "id": "0",
                    "name": "skincare",
                    "title": "skincare"
                },
                {
                    "id": "1",
                    "name": "retinol",
                    "title": "retinol"
                }
            ],
            "videoMeta": {
                "height": 1024,
                "width": 576,
                "duration": 31
            },
            "searchQuery": "skincare routine"
        },
        {
            "inputUrl": "https://www.instagram.com/private.person/",
            "error": "not_found",
            "errorDescription": "Page not found or private"
        },
        {
            "inputUrl": "https://www.instagram.com/explore/tags/cleanbeauty/",
            "id": "17841563",
            "name": "cleanbeauty",
            "postsCount": 14200000,
            "url": "https://www.instagram.com/explore/tags/cleanbeauty/",
            "topPosts": []
        }
    ],
    "discoveryInput": {},
    "proxyConfiguration": {
        "useApifyProxy": true
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("rich_minds/instagram-creator-qualifier").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 = {
    "sourceMode": "list",
    "goalDescription": "Skincare creators posting honest routines and product reviews, 10k–200k followers, active weekly, brand-safe, reachable by e-mail or DM, for a paid clean-beauty launch campaign.",
    "maxDiscoveryChargeUsd": 0.5,
    "itemsList": [
        {
            "inputUrl": "https://www.instagram.com/explore/tags/cleanbeauty/",
            "id": "39526044524073062",
            "type": "Video",
            "shortCode": "GLOW0020",
            "caption": "My 5-step evening routine for dry skin — honest review of the new ceramide serum ✨ #cleanbeauty #skincareroutine #dryskin",
            "hashtags": [
                "cleanbeauty",
                "skincareroutine",
                "dryskin",
            ],
            "mentions": [],
            "url": "https://www.instagram.com/p/GLOW0020/",
            "commentsCount": 96,
            "firstComment": "Love this routine, which serum is that?",
            "latestComments": [
                {
                    "id": "0",
                    "text": "Love this routine, which serum is that?",
                    "ownerUsername": "fan0",
                    "timestamp": "2026-09-19T14:24:00.000Z",
                    "likesCount": 1,
                },
                {
                    "id": "1",
                    "text": "The glow is real 😍",
                    "ownerUsername": "fan1",
                    "timestamp": "2026-09-19T14:24:00.000Z",
                    "likesCount": 1,
                },
                {
                    "id": "2",
                    "text": "Tried it — works on my dry skin too",
                    "ownerUsername": "fan2",
                    "timestamp": "2026-09-19T14:24:00.000Z",
                    "likesCount": 1,
                },
            ],
            "dimensionsHeight": 1350,
            "dimensionsWidth": 1080,
            "displayUrl": "https://scontent.cdninstagram.com/x.jpg",
            "images": [],
            "alt": None,
            "likesCount": 1840,
            "timestamp": "2026-09-19T12:00:00.000Z",
            "childPosts": [],
            "ownerFullName": "Maya Lindqvist",
            "ownerUsername": "glowwithmaya",
            "ownerId": "1001",
            "isPinned": False,
            "isCommentsDisabled": False,
            "productType": "clips",
            "videoViewCount": 41000,
            "videoPlayCount": 57399,
            "videoDuration": 23,
        },
        {
            "inputUrl": "https://www.instagram.com/explore/tags/cleanbeauty/",
            "id": "39929491973621981",
            "type": "Image",
            "shortCode": "GLOW0060",
            "caption": "Ingredient breakdown: niacinamide vs azelaic acid. Save this one. #cleanbeauty #ingredients",
            "hashtags": [
                "cleanbeauty",
                "ingredients",
            ],
            "mentions": [],
            "url": "https://www.instagram.com/p/GLOW0060/",
            "commentsCount": 71,
            "firstComment": "Finally someone explains azelaic acid without selling me something",
            "latestComments": [
                {
                    "id": "0",
                    "text": "Finally someone explains azelaic acid without selling me something",
                    "ownerUsername": "fan0",
                    "timestamp": "2026-09-15T14:24:00.000Z",
                    "likesCount": 1,
                },
                {
                    "id": "1",
                    "text": "Saved! Can I layer this with vitamin C?",
                    "ownerUsername": "fan1",
                    "timestamp": "2026-09-15T14:24:00.000Z",
                    "likesCount": 1,
                },
                {
                    "id": "2",
                    "text": "which moisturiser do you use after?",
                    "ownerUsername": "fan2",
                    "timestamp": "2026-09-15T14:24:00.000Z",
                    "likesCount": 1,
                },
            ],
            "dimensionsHeight": 1350,
            "dimensionsWidth": 1080,
            "displayUrl": "https://scontent.cdninstagram.com/x.jpg",
            "images": [],
            "alt": None,
            "likesCount": 1520,
            "timestamp": "2026-09-15T12:00:00.000Z",
            "childPosts": [],
            "ownerFullName": "Maya Lindqvist",
            "ownerUsername": "glowwithmaya",
            "ownerId": "1001",
            "isPinned": False,
            "isCommentsDisabled": False,
        },
        {
            "inputUrl": "https://www.instagram.com/explore/tags/cleanbeauty/",
            "id": "39091718840068626",
            "type": "Sidecar",
            "shortCode": "GLOW0110",
            "caption": "Before / after 8 weeks with the retinal I keep talking about. Not sponsored, bought with my own money. #skincareroutine",
            "hashtags": ["skincareroutine"],
            "mentions": ["theordinary"],
            "url": "https://www.instagram.com/p/GLOW0110/",
            "commentsCount": 143,
            "firstComment": "",
            "latestComments": [],
            "dimensionsHeight": 1350,
            "dimensionsWidth": 1080,
            "displayUrl": "https://scontent.cdninstagram.com/x.jpg",
            "images": [],
            "alt": None,
            "likesCount": 2210,
            "timestamp": "2026-09-10T12:00:00.000Z",
            "childPosts": [],
            "ownerFullName": "Maya Lindqvist",
            "ownerUsername": "glowwithmaya",
            "ownerId": "1001",
            "isPinned": False,
            "isCommentsDisabled": False,
        },
        {
            "inputUrl": "https://www.instagram.com/explore/tags/cleanbeauty/",
            "id": "39032192664855005",
            "type": "Image",
            "shortCode": "GLOW2100",
            "caption": "Start here 👇 my full routine in one post #cleanbeauty",
            "hashtags": ["cleanbeauty"],
            "mentions": [],
            "url": "https://www.instagram.com/p/GLOW2100/",
            "commentsCount": 410,
            "firstComment": "",
            "latestComments": [],
            "dimensionsHeight": 1350,
            "dimensionsWidth": 1080,
            "displayUrl": "https://scontent.cdninstagram.com/x.jpg",
            "images": [],
            "alt": None,
            "likesCount": 9800,
            "timestamp": "2026-02-23T12:00:00.000Z",
            "childPosts": [],
            "ownerFullName": "Maya Lindqvist",
            "ownerUsername": "glowwithmaya",
            "ownerId": "1001",
            "isPinned": True,
            "isCommentsDisabled": False,
        },
        {
            "inputUrl": "https://www.instagram.com/explore/locations/212988663/london-united-kingdom/",
            "id": "39998609538550698",
            "type": "Image",
            "shortCode": "GLOW0160",
            "caption": "Clean beauty pop-up in Shoreditch — everything I tested #london #cleanbeauty",
            "hashtags": [
                "london",
                "cleanbeauty",
            ],
            "mentions": [],
            "url": "https://www.instagram.com/p/GLOW0160/",
            "commentsCount": 58,
            "firstComment": "",
            "latestComments": [],
            "dimensionsHeight": 1350,
            "dimensionsWidth": 1080,
            "displayUrl": "https://scontent.cdninstagram.com/x.jpg",
            "images": [],
            "alt": None,
            "likesCount": 1390,
            "timestamp": "2026-09-05T12:00:00.000Z",
            "childPosts": [],
            "ownerFullName": "Maya Lindqvist",
            "ownerUsername": "glowwithmaya",
            "ownerId": "1001",
            "isPinned": False,
            "isCommentsDisabled": False,
        },
        {
            "inputUrl": "https://www.instagram.com/explore/tags/cleanbeauty/",
            "id": "39291044146123934",
            "type": "Image",
            "shortCode": "SKIN0040",
            "caption": "AD | Trying the new SPF from @sunbrand — paid partnership, honest thoughts inside #ad #cleanbeauty",
            "hashtags": [
                "ad",
                "cleanbeauty",
            ],
            "mentions": ["sunbrand"],
            "url": "https://www.instagram.com/p/SKIN0040/",
            "commentsCount": 22,
            "firstComment": "",
            "latestComments": [],
            "dimensionsHeight": 1350,
            "dimensionsWidth": 1080,
            "displayUrl": "https://scontent.cdninstagram.com/x.jpg",
            "images": [],
            "alt": None,
            "likesCount": 640,
            "timestamp": "2026-09-17T12:00:00.000Z",
            "childPosts": [],
            "ownerFullName": "Sam Okafor",
            "ownerUsername": "skin.by.sam",
            "ownerId": "1002",
            "isPinned": False,
            "isCommentsDisabled": False,
        },
        {
            "inputUrl": "https://www.instagram.com/explore/tags/cleanbeauty/",
            "id": "39334672068528884",
            "type": "Video",
            "shortCode": "SKIN0130",
            "caption": "Double cleansing explained in 60 seconds #skincareroutine #cleanbeauty",
            "hashtags": [
                "skincareroutine",
                "cleanbeauty",
            ],
            "mentions": [],
            "url": "https://www.instagram.com/p/SKIN0130/",
            "commentsCount": 35,
            "firstComment": "Double cleansing changed my skin honestly",
            "latestComments": [
                {
                    "id": "0",
                    "text": "Double cleansing changed my skin honestly",
                    "ownerUsername": "fan0",
                    "timestamp": "2026-09-08T14:24:00.000Z",
                    "likesCount": 1,
                },
                {
                    "id": "1",
                    "text": "nice",
                    "ownerUsername": "fan1",
                    "timestamp": "2026-09-08T14:24:00.000Z",
                    "likesCount": 1,
                },
                {
                    "id": "2",
                    "text": "Does this work for oily skin too?",
                    "ownerUsername": "fan2",
                    "timestamp": "2026-09-08T14:24:00.000Z",
                    "likesCount": 1,
                },
            ],
            "dimensionsHeight": 1350,
            "dimensionsWidth": 1080,
            "displayUrl": "https://scontent.cdninstagram.com/x.jpg",
            "images": [],
            "alt": None,
            "likesCount": 810,
            "timestamp": "2026-09-08T12:00:00.000Z",
            "childPosts": [],
            "ownerFullName": "Sam Okafor",
            "ownerUsername": "skin.by.sam",
            "ownerId": "1002",
            "isPinned": False,
            "isCommentsDisabled": False,
            "productType": "clips",
            "videoViewCount": 15400,
            "videoPlayCount": 21560,
            "videoDuration": 23,
        },
        {
            "inputUrl": "https://www.instagram.com/explore/tags/cleanbeauty/",
            "id": "39350346900013190",
            "type": "Image",
            "shortCode": "SKIN0270",
            "caption": "Empties of the month — what I'd repurchase #cleanbeauty",
            "hashtags": ["cleanbeauty"],
            "mentions": [],
            "url": "https://www.instagram.com/p/SKIN0270/",
            "commentsCount": 19,
            "firstComment": "Agree on the toner, repurchased twice",
            "latestComments": [
                {
                    "id": "0",
                    "text": "Agree on the toner, repurchased twice",
                    "ownerUsername": "fan0",
                    "timestamp": "2026-08-25T14:24:00.000Z",
                    "likesCount": 1,
                },
                {
                    "id": "1",
                    "text": "love it 😍",
                    "ownerUsername": "fan1",
                    "timestamp": "2026-08-25T14:24:00.000Z",
                    "likesCount": 1,
                },
            ],
            "dimensionsHeight": 1350,
            "dimensionsWidth": 1080,
            "displayUrl": "https://scontent.cdninstagram.com/x.jpg",
            "images": [],
            "alt": None,
            "likesCount": 590,
            "timestamp": "2026-08-25T12:00:00.000Z",
            "childPosts": [],
            "ownerFullName": "Sam Okafor",
            "ownerUsername": "skin.by.sam",
            "ownerId": "1002",
            "isPinned": False,
            "isCommentsDisabled": False,
        },
        {
            "inputUrl": "https://www.instagram.com/explore/tags/cleanbeauty/",
            "id": "39774101418382598",
            "type": "Image",
            "shortCode": "DAIL0350",
            "caption": "New lab post: how pH affects your cleanser #cleanbeauty #skincarescience",
            "hashtags": [
                "cleanbeauty",
                "skincarescience",
            ],
            "mentions": [],
            "url": "https://www.instagram.com/p/DAIL0350/",
            "commentsCount": 3,
            "firstComment": "",
            "latestComments": [],
            "dimensionsHeight": 1350,
            "dimensionsWidth": 1080,
            "displayUrl": "https://scontent.cdninstagram.com/x.jpg",
            "images": [],
            "alt": None,
            "likesCount": 88,
            "timestamp": "2026-08-17T12:00:00.000Z",
            "childPosts": [],
            "ownerFullName": "Dailyglowlab",
            "ownerUsername": "dailyglowlab",
            "ownerId": "1003",
            "isPinned": False,
            "isCommentsDisabled": False,
        },
        {
            "inputUrl": "https://www.instagram.com/explore/tags/cleanbeauty/",
            "id": "39734076919195563",
            "type": "Image",
            "shortCode": "DAIL0520",
            "caption": "Fragrance-free does not mean scent-free. Thread in comments. #cleanbeauty",
            "hashtags": ["cleanbeauty"],
            "mentions": [],
            "url": "https://www.instagram.com/p/DAIL0520/",
            "commentsCount": 5,
            "firstComment": "",
            "latestComments": [],
            "dimensionsHeight": 1350,
            "dimensionsWidth": 1080,
            "displayUrl": "https://scontent.cdninstagram.com/x.jpg",
            "images": [],
            "alt": None,
            "likesCount": 102,
            "timestamp": "2026-07-31T12:00:00.000Z",
            "childPosts": [],
            "ownerFullName": "Dailyglowlab",
            "ownerUsername": "dailyglowlab",
            "ownerId": "1003",
            "isPinned": False,
            "isCommentsDisabled": False,
        },
        {
            "inputUrl": "https://www.instagram.com/explore/tags/cleanbeauty/",
            "id": "39745924162730768",
            "type": "Image",
            "shortCode": "BIGB0010",
            "caption": "Our new launch is here #cleanbeauty",
            "hashtags": ["cleanbeauty"],
            "mentions": [],
            "url": "https://www.instagram.com/p/BIGB0010/",
            "commentsCount": 310,
            "firstComment": "nice",
            "latestComments": [
                {
                    "id": "0",
                    "text": "nice",
                    "ownerUsername": "fan0",
                    "timestamp": "2026-09-20T14:24:00.000Z",
                    "likesCount": 1,
                },
                {
                    "id": "1",
                    "text": "DM us to collab! Send pic to @promo.page",
                    "ownerUsername": "fan1",
                    "timestamp": "2026-09-20T14:24:00.000Z",
                    "likesCount": 1,
                },
                {
                    "id": "2",
                    "text": "nice",
                    "ownerUsername": "fan2",
                    "timestamp": "2026-09-20T14:24:00.000Z",
                    "likesCount": 1,
                },
                {
                    "id": "3",
                    "text": "Promote it on @growth.page",
                    "ownerUsername": "fan3",
                    "timestamp": "2026-09-20T14:24:00.000Z",
                    "likesCount": 1,
                },
            ],
            "dimensionsHeight": 1350,
            "dimensionsWidth": 1080,
            "displayUrl": "https://scontent.cdninstagram.com/x.jpg",
            "images": [],
            "alt": None,
            "likesCount": 25000,
            "timestamp": "2026-09-20T12:00:00.000Z",
            "childPosts": [],
            "ownerFullName": "BigBrand Beauty",
            "ownerUsername": "bigbrandbeauty",
            "ownerId": "1004",
            "isPinned": False,
            "isCommentsDisabled": False,
        },
        {
            "inputUrl": "https://www.instagram.com/explore/locations/212988663/london-united-kingdom/",
            "id": "39042476886006904",
            "type": "Image",
            "shortCode": "NIGH0030",
            "caption": "Casino night in London — join the betting tips group in bio 🎰 #london #casino",
            "hashtags": [
                "london",
                "casino",
            ],
            "mentions": [],
            "url": "https://www.instagram.com/p/NIGH0030/",
            "commentsCount": 12,
            "firstComment": "",
            "latestComments": [],
            "dimensionsHeight": 1350,
            "dimensionsWidth": 1080,
            "displayUrl": "https://scontent.cdninstagram.com/x.jpg",
            "images": [],
            "alt": None,
            "likesCount": 430,
            "timestamp": "2026-09-18T12:00:00.000Z",
            "childPosts": [],
            "ownerFullName": "Nightlife Vibes",
            "ownerUsername": "nightlife.vibes",
            "ownerId": "1005",
            "isPinned": False,
            "isCommentsDisabled": False,
        },
        {
            "inputUrl": "https://www.instagram.com/explore/locations/212988663/london-united-kingdom/",
            "id": "39352282574848419",
            "type": "Image",
            "shortCode": "NIGH0090",
            "caption": "Weekend recap #london #nightlife",
            "hashtags": [
                "london",
                "nightlife",
            ],
            "mentions": [],
            "url": "https://www.instagram.com/p/NIGH0090/",
            "commentsCount": 9,
            "firstComment": "",
            "latestComments": [],
            "dimensionsHeight": 1350,
            "dimensionsWidth": 1080,
            "displayUrl": "https://scontent.cdninstagram.com/x.jpg",
            "images": [],
            "alt": None,
            "likesCount": 380,
            "timestamp": "2026-09-12T12:00:00.000Z",
            "childPosts": [],
            "ownerFullName": "Nightlife Vibes",
            "ownerUsername": "nightlife.vibes",
            "ownerId": "1005",
            "isPinned": False,
            "isCommentsDisabled": False,
        },
        {
            "inputUrl": "https://www.instagram.com/skin.by.sam/",
            "id": "1002",
            "username": "skin.by.sam",
            "url": "https://www.instagram.com/skin.by.sam",
            "fullName": "Sam Okafor",
            "biography": "Skincare without the fluff 🧴 Business inquiries: hello@skinbysam.co · collabs open",
            "externalUrls": [{
                    "title": "",
                    "url": "https://linktr.ee/skinbysam",
                    "link_type": "external",
                }],
            "externalUrl": "https://linktr.ee/skinbysam",
            "followersCount": 45200,
            "followsCount": 512,
            "highlightReelCount": 3,
            "isBusinessAccount": True,
            "joinedRecently": False,
            "businessCategoryName": "Digital creator",
            "private": False,
            "verified": False,
            "profilePicUrl": "https://scontent.cdninstagram.com/p.jpg",
            "profilePicUrlHD": "https://scontent.cdninstagram.com/p.jpg",
            "igtvVideoCount": 0,
            "postsCount": 412,
            "fbid": "1784",
            "latestPosts": [{
                    "inputUrl": "https://www.instagram.com/skin.by.sam/",
                    "id": "39125761352924710",
                    "type": "Image",
                    "shortCode": "SKIN0005",
                    "caption": "Sunday reset #skincareroutine",
                    "hashtags": ["skincareroutine"],
                    "mentions": [],
                    "url": "https://www.instagram.com/p/SKIN0005/",
                    "commentsCount": 30,
                    "firstComment": "",
                    "latestComments": [],
                    "dimensionsHeight": 1350,
                    "dimensionsWidth": 1080,
                    "displayUrl": "https://scontent.cdninstagram.com/x.jpg",
                    "images": [],
                    "alt": None,
                    "likesCount": 700,
                    "timestamp": "2026-09-21T00:00:00.000Z",
                    "childPosts": [],
                    "ownerFullName": "Sam Okafor",
                    "ownerUsername": "skin.by.sam",
                    "ownerId": "1002",
                    "isPinned": False,
                    "isCommentsDisabled": False,
                }],
        },
        {
            "id": "749595475059841487",
            "text": "3 drugstore products that beat luxury skincare #skincare #cleanbeauty #dupes",
            "textLanguage": "en",
            "createTime": 1789560000,
            "createTimeISO": "2026-09-16T12:00:00.000Z",
            "isAd": False,
            "isSponsored": False,
            "isPinned": False,
            "authorMeta": {
                "id": "6812",
                "name": "glow_by_jules",
                "profileUrl": "https://www.tiktok.com/@glow_by_jules",
                "nickName": "Glow By Jules",
                "verified": False,
                "signature": "skincare on a budget 💧 collabs: jules.creator@gmail.com",
                "bioLink": "https://beacons.ai/glowbyjules",
                "privateAccount": False,
                "ttSeller": False,
                "fans": 88000,
                "heart": 1056000,
                "video": 230,
                "digg": 1200,
                "following": 300,
            },
            "webVideoUrl": "https://www.tiktok.com/@glow_by_jules/video/749595475059841487",
            "diggCount": 18400,
            "shareCount": 1900,
            "playCount": 210000,
            "collectCount": 1840,
            "commentCount": 620,
            "hashtags": [
                {
                    "id": "0",
                    "name": "skincare",
                    "title": "skincare",
                },
                {
                    "id": "1",
                    "name": "cleanbeauty",
                    "title": "cleanbeauty",
                },
                {
                    "id": "2",
                    "name": "dupes",
                    "title": "dupes",
                },
            ],
            "videoMeta": {
                "height": 1024,
                "width": 576,
                "duration": 31,
            },
            "searchQuery": "skincare routine",
        },
        {
            "id": "796889321002805530",
            "text": "Retinol for beginners — what nobody tells you #skincare #retinol",
            "textLanguage": "en",
            "createTime": 1788955200,
            "createTimeISO": "2026-09-09T12:00:00.000Z",
            "isAd": False,
            "isSponsored": False,
            "isPinned": False,
            "authorMeta": {
                "id": "6812",
                "name": "glow_by_jules",
                "profileUrl": "https://www.tiktok.com/@glow_by_jules",
                "nickName": "Glow By Jules",
                "verified": False,
                "signature": "skincare on a budget 💧 collabs: jules.creator@gmail.com",
                "bioLink": "https://beacons.ai/glowbyjules",
                "privateAccount": False,
                "ttSeller": False,
                "fans": 88000,
                "heart": 1056000,
                "video": 230,
                "digg": 1200,
                "following": 300,
            },
            "webVideoUrl": "https://www.tiktok.com/@glow_by_jules/video/796889321002805530",
            "diggCount": 7100,
            "shareCount": 640,
            "playCount": 95000,
            "collectCount": 710,
            "commentCount": 210,
            "hashtags": [
                {
                    "id": "0",
                    "name": "skincare",
                    "title": "skincare",
                },
                {
                    "id": "1",
                    "name": "retinol",
                    "title": "retinol",
                },
            ],
            "videoMeta": {
                "height": 1024,
                "width": 576,
                "duration": 31,
            },
            "searchQuery": "skincare routine",
        },
        {
            "inputUrl": "https://www.instagram.com/private.person/",
            "error": "not_found",
            "errorDescription": "Page not found or private",
        },
        {
            "inputUrl": "https://www.instagram.com/explore/tags/cleanbeauty/",
            "id": "17841563",
            "name": "cleanbeauty",
            "postsCount": 14200000,
            "url": "https://www.instagram.com/explore/tags/cleanbeauty/",
            "topPosts": [],
        },
    ],
    "discoveryInput": {},
    "proxyConfiguration": { "useApifyProxy": True },
}

# Run the Actor and wait for it to finish
run = client.actor("rich_minds/instagram-creator-qualifier").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 '{
  "sourceMode": "list",
  "goalDescription": "Skincare creators posting honest routines and product reviews, 10k–200k followers, active weekly, brand-safe, reachable by e-mail or DM, for a paid clean-beauty launch campaign.",
  "maxDiscoveryChargeUsd": 0.5,
  "itemsList": [
    {
      "inputUrl": "https://www.instagram.com/explore/tags/cleanbeauty/",
      "id": "39526044524073062",
      "type": "Video",
      "shortCode": "GLOW0020",
      "caption": "My 5-step evening routine for dry skin — honest review of the new ceramide serum ✨ #cleanbeauty #skincareroutine #dryskin",
      "hashtags": [
        "cleanbeauty",
        "skincareroutine",
        "dryskin"
      ],
      "mentions": [],
      "url": "https://www.instagram.com/p/GLOW0020/",
      "commentsCount": 96,
      "firstComment": "Love this routine, which serum is that?",
      "latestComments": [
        {
          "id": "0",
          "text": "Love this routine, which serum is that?",
          "ownerUsername": "fan0",
          "timestamp": "2026-09-19T14:24:00.000Z",
          "likesCount": 1
        },
        {
          "id": "1",
          "text": "The glow is real 😍",
          "ownerUsername": "fan1",
          "timestamp": "2026-09-19T14:24:00.000Z",
          "likesCount": 1
        },
        {
          "id": "2",
          "text": "Tried it — works on my dry skin too",
          "ownerUsername": "fan2",
          "timestamp": "2026-09-19T14:24:00.000Z",
          "likesCount": 1
        }
      ],
      "dimensionsHeight": 1350,
      "dimensionsWidth": 1080,
      "displayUrl": "https://scontent.cdninstagram.com/x.jpg",
      "images": [],
      "alt": null,
      "likesCount": 1840,
      "timestamp": "2026-09-19T12:00:00.000Z",
      "childPosts": [],
      "ownerFullName": "Maya Lindqvist",
      "ownerUsername": "glowwithmaya",
      "ownerId": "1001",
      "isPinned": false,
      "isCommentsDisabled": false,
      "productType": "clips",
      "videoViewCount": 41000,
      "videoPlayCount": 57399,
      "videoDuration": 23
    },
    {
      "inputUrl": "https://www.instagram.com/explore/tags/cleanbeauty/",
      "id": "39929491973621981",
      "type": "Image",
      "shortCode": "GLOW0060",
      "caption": "Ingredient breakdown: niacinamide vs azelaic acid. Save this one. #cleanbeauty #ingredients",
      "hashtags": [
        "cleanbeauty",
        "ingredients"
      ],
      "mentions": [],
      "url": "https://www.instagram.com/p/GLOW0060/",
      "commentsCount": 71,
      "firstComment": "Finally someone explains azelaic acid without selling me something",
      "latestComments": [
        {
          "id": "0",
          "text": "Finally someone explains azelaic acid without selling me something",
          "ownerUsername": "fan0",
          "timestamp": "2026-09-15T14:24:00.000Z",
          "likesCount": 1
        },
        {
          "id": "1",
          "text": "Saved! Can I layer this with vitamin C?",
          "ownerUsername": "fan1",
          "timestamp": "2026-09-15T14:24:00.000Z",
          "likesCount": 1
        },
        {
          "id": "2",
          "text": "which moisturiser do you use after?",
          "ownerUsername": "fan2",
          "timestamp": "2026-09-15T14:24:00.000Z",
          "likesCount": 1
        }
      ],
      "dimensionsHeight": 1350,
      "dimensionsWidth": 1080,
      "displayUrl": "https://scontent.cdninstagram.com/x.jpg",
      "images": [],
      "alt": null,
      "likesCount": 1520,
      "timestamp": "2026-09-15T12:00:00.000Z",
      "childPosts": [],
      "ownerFullName": "Maya Lindqvist",
      "ownerUsername": "glowwithmaya",
      "ownerId": "1001",
      "isPinned": false,
      "isCommentsDisabled": false
    },
    {
      "inputUrl": "https://www.instagram.com/explore/tags/cleanbeauty/",
      "id": "39091718840068626",
      "type": "Sidecar",
      "shortCode": "GLOW0110",
      "caption": "Before / after 8 weeks with the retinal I keep talking about. Not sponsored, bought with my own money. #skincareroutine",
      "hashtags": [
        "skincareroutine"
      ],
      "mentions": [
        "theordinary"
      ],
      "url": "https://www.instagram.com/p/GLOW0110/",
      "commentsCount": 143,
      "firstComment": "",
      "latestComments": [],
      "dimensionsHeight": 1350,
      "dimensionsWidth": 1080,
      "displayUrl": "https://scontent.cdninstagram.com/x.jpg",
      "images": [],
      "alt": null,
      "likesCount": 2210,
      "timestamp": "2026-09-10T12:00:00.000Z",
      "childPosts": [],
      "ownerFullName": "Maya Lindqvist",
      "ownerUsername": "glowwithmaya",
      "ownerId": "1001",
      "isPinned": false,
      "isCommentsDisabled": false
    },
    {
      "inputUrl": "https://www.instagram.com/explore/tags/cleanbeauty/",
      "id": "39032192664855005",
      "type": "Image",
      "shortCode": "GLOW2100",
      "caption": "Start here 👇 my full routine in one post #cleanbeauty",
      "hashtags": [
        "cleanbeauty"
      ],
      "mentions": [],
      "url": "https://www.instagram.com/p/GLOW2100/",
      "commentsCount": 410,
      "firstComment": "",
      "latestComments": [],
      "dimensionsHeight": 1350,
      "dimensionsWidth": 1080,
      "displayUrl": "https://scontent.cdninstagram.com/x.jpg",
      "images": [],
      "alt": null,
      "likesCount": 9800,
      "timestamp": "2026-02-23T12:00:00.000Z",
      "childPosts": [],
      "ownerFullName": "Maya Lindqvist",
      "ownerUsername": "glowwithmaya",
      "ownerId": "1001",
      "isPinned": true,
      "isCommentsDisabled": false
    },
    {
      "inputUrl": "https://www.instagram.com/explore/locations/212988663/london-united-kingdom/",
      "id": "39998609538550698",
      "type": "Image",
      "shortCode": "GLOW0160",
      "caption": "Clean beauty pop-up in Shoreditch — everything I tested #london #cleanbeauty",
      "hashtags": [
        "london",
        "cleanbeauty"
      ],
      "mentions": [],
      "url": "https://www.instagram.com/p/GLOW0160/",
      "commentsCount": 58,
      "firstComment": "",
      "latestComments": [],
      "dimensionsHeight": 1350,
      "dimensionsWidth": 1080,
      "displayUrl": "https://scontent.cdninstagram.com/x.jpg",
      "images": [],
      "alt": null,
      "likesCount": 1390,
      "timestamp": "2026-09-05T12:00:00.000Z",
      "childPosts": [],
      "ownerFullName": "Maya Lindqvist",
      "ownerUsername": "glowwithmaya",
      "ownerId": "1001",
      "isPinned": false,
      "isCommentsDisabled": false
    },
    {
      "inputUrl": "https://www.instagram.com/explore/tags/cleanbeauty/",
      "id": "39291044146123934",
      "type": "Image",
      "shortCode": "SKIN0040",
      "caption": "AD | Trying the new SPF from @sunbrand — paid partnership, honest thoughts inside #ad #cleanbeauty",
      "hashtags": [
        "ad",
        "cleanbeauty"
      ],
      "mentions": [
        "sunbrand"
      ],
      "url": "https://www.instagram.com/p/SKIN0040/",
      "commentsCount": 22,
      "firstComment": "",
      "latestComments": [],
      "dimensionsHeight": 1350,
      "dimensionsWidth": 1080,
      "displayUrl": "https://scontent.cdninstagram.com/x.jpg",
      "images": [],
      "alt": null,
      "likesCount": 640,
      "timestamp": "2026-09-17T12:00:00.000Z",
      "childPosts": [],
      "ownerFullName": "Sam Okafor",
      "ownerUsername": "skin.by.sam",
      "ownerId": "1002",
      "isPinned": false,
      "isCommentsDisabled": false
    },
    {
      "inputUrl": "https://www.instagram.com/explore/tags/cleanbeauty/",
      "id": "39334672068528884",
      "type": "Video",
      "shortCode": "SKIN0130",
      "caption": "Double cleansing explained in 60 seconds #skincareroutine #cleanbeauty",
      "hashtags": [
        "skincareroutine",
        "cleanbeauty"
      ],
      "mentions": [],
      "url": "https://www.instagram.com/p/SKIN0130/",
      "commentsCount": 35,
      "firstComment": "Double cleansing changed my skin honestly",
      "latestComments": [
        {
          "id": "0",
          "text": "Double cleansing changed my skin honestly",
          "ownerUsername": "fan0",
          "timestamp": "2026-09-08T14:24:00.000Z",
          "likesCount": 1
        },
        {
          "id": "1",
          "text": "nice",
          "ownerUsername": "fan1",
          "timestamp": "2026-09-08T14:24:00.000Z",
          "likesCount": 1
        },
        {
          "id": "2",
          "text": "Does this work for oily skin too?",
          "ownerUsername": "fan2",
          "timestamp": "2026-09-08T14:24:00.000Z",
          "likesCount": 1
        }
      ],
      "dimensionsHeight": 1350,
      "dimensionsWidth": 1080,
      "displayUrl": "https://scontent.cdninstagram.com/x.jpg",
      "images": [],
      "alt": null,
      "likesCount": 810,
      "timestamp": "2026-09-08T12:00:00.000Z",
      "childPosts": [],
      "ownerFullName": "Sam Okafor",
      "ownerUsername": "skin.by.sam",
      "ownerId": "1002",
      "isPinned": false,
      "isCommentsDisabled": false,
      "productType": "clips",
      "videoViewCount": 15400,
      "videoPlayCount": 21560,
      "videoDuration": 23
    },
    {
      "inputUrl": "https://www.instagram.com/explore/tags/cleanbeauty/",
      "id": "39350346900013190",
      "type": "Image",
      "shortCode": "SKIN0270",
      "caption": "Empties of the month — what I'\''d repurchase #cleanbeauty",
      "hashtags": [
        "cleanbeauty"
      ],
      "mentions": [],
      "url": "https://www.instagram.com/p/SKIN0270/",
      "commentsCount": 19,
      "firstComment": "Agree on the toner, repurchased twice",
      "latestComments": [
        {
          "id": "0",
          "text": "Agree on the toner, repurchased twice",
          "ownerUsername": "fan0",
          "timestamp": "2026-08-25T14:24:00.000Z",
          "likesCount": 1
        },
        {
          "id": "1",
          "text": "love it 😍",
          "ownerUsername": "fan1",
          "timestamp": "2026-08-25T14:24:00.000Z",
          "likesCount": 1
        }
      ],
      "dimensionsHeight": 1350,
      "dimensionsWidth": 1080,
      "displayUrl": "https://scontent.cdninstagram.com/x.jpg",
      "images": [],
      "alt": null,
      "likesCount": 590,
      "timestamp": "2026-08-25T12:00:00.000Z",
      "childPosts": [],
      "ownerFullName": "Sam Okafor",
      "ownerUsername": "skin.by.sam",
      "ownerId": "1002",
      "isPinned": false,
      "isCommentsDisabled": false
    },
    {
      "inputUrl": "https://www.instagram.com/explore/tags/cleanbeauty/",
      "id": "39774101418382598",
      "type": "Image",
      "shortCode": "DAIL0350",
      "caption": "New lab post: how pH affects your cleanser #cleanbeauty #skincarescience",
      "hashtags": [
        "cleanbeauty",
        "skincarescience"
      ],
      "mentions": [],
      "url": "https://www.instagram.com/p/DAIL0350/",
      "commentsCount": 3,
      "firstComment": "",
      "latestComments": [],
      "dimensionsHeight": 1350,
      "dimensionsWidth": 1080,
      "displayUrl": "https://scontent.cdninstagram.com/x.jpg",
      "images": [],
      "alt": null,
      "likesCount": 88,
      "timestamp": "2026-08-17T12:00:00.000Z",
      "childPosts": [],
      "ownerFullName": "Dailyglowlab",
      "ownerUsername": "dailyglowlab",
      "ownerId": "1003",
      "isPinned": false,
      "isCommentsDisabled": false
    },
    {
      "inputUrl": "https://www.instagram.com/explore/tags/cleanbeauty/",
      "id": "39734076919195563",
      "type": "Image",
      "shortCode": "DAIL0520",
      "caption": "Fragrance-free does not mean scent-free. Thread in comments. #cleanbeauty",
      "hashtags": [
        "cleanbeauty"
      ],
      "mentions": [],
      "url": "https://www.instagram.com/p/DAIL0520/",
      "commentsCount": 5,
      "firstComment": "",
      "latestComments": [],
      "dimensionsHeight": 1350,
      "dimensionsWidth": 1080,
      "displayUrl": "https://scontent.cdninstagram.com/x.jpg",
      "images": [],
      "alt": null,
      "likesCount": 102,
      "timestamp": "2026-07-31T12:00:00.000Z",
      "childPosts": [],
      "ownerFullName": "Dailyglowlab",
      "ownerUsername": "dailyglowlab",
      "ownerId": "1003",
      "isPinned": false,
      "isCommentsDisabled": false
    },
    {
      "inputUrl": "https://www.instagram.com/explore/tags/cleanbeauty/",
      "id": "39745924162730768",
      "type": "Image",
      "shortCode": "BIGB0010",
      "caption": "Our new launch is here #cleanbeauty",
      "hashtags": [
        "cleanbeauty"
      ],
      "mentions": [],
      "url": "https://www.instagram.com/p/BIGB0010/",
      "commentsCount": 310,
      "firstComment": "nice",
      "latestComments": [
        {
          "id": "0",
          "text": "nice",
          "ownerUsername": "fan0",
          "timestamp": "2026-09-20T14:24:00.000Z",
          "likesCount": 1
        },
        {
          "id": "1",
          "text": "DM us to collab! Send pic to @promo.page",
          "ownerUsername": "fan1",
          "timestamp": "2026-09-20T14:24:00.000Z",
          "likesCount": 1
        },
        {
          "id": "2",
          "text": "nice",
          "ownerUsername": "fan2",
          "timestamp": "2026-09-20T14:24:00.000Z",
          "likesCount": 1
        },
        {
          "id": "3",
          "text": "Promote it on @growth.page",
          "ownerUsername": "fan3",
          "timestamp": "2026-09-20T14:24:00.000Z",
          "likesCount": 1
        }
      ],
      "dimensionsHeight": 1350,
      "dimensionsWidth": 1080,
      "displayUrl": "https://scontent.cdninstagram.com/x.jpg",
      "images": [],
      "alt": null,
      "likesCount": 25000,
      "timestamp": "2026-09-20T12:00:00.000Z",
      "childPosts": [],
      "ownerFullName": "BigBrand Beauty",
      "ownerUsername": "bigbrandbeauty",
      "ownerId": "1004",
      "isPinned": false,
      "isCommentsDisabled": false
    },
    {
      "inputUrl": "https://www.instagram.com/explore/locations/212988663/london-united-kingdom/",
      "id": "39042476886006904",
      "type": "Image",
      "shortCode": "NIGH0030",
      "caption": "Casino night in London — join the betting tips group in bio 🎰 #london #casino",
      "hashtags": [
        "london",
        "casino"
      ],
      "mentions": [],
      "url": "https://www.instagram.com/p/NIGH0030/",
      "commentsCount": 12,
      "firstComment": "",
      "latestComments": [],
      "dimensionsHeight": 1350,
      "dimensionsWidth": 1080,
      "displayUrl": "https://scontent.cdninstagram.com/x.jpg",
      "images": [],
      "alt": null,
      "likesCount": 430,
      "timestamp": "2026-09-18T12:00:00.000Z",
      "childPosts": [],
      "ownerFullName": "Nightlife Vibes",
      "ownerUsername": "nightlife.vibes",
      "ownerId": "1005",
      "isPinned": false,
      "isCommentsDisabled": false
    },
    {
      "inputUrl": "https://www.instagram.com/explore/locations/212988663/london-united-kingdom/",
      "id": "39352282574848419",
      "type": "Image",
      "shortCode": "NIGH0090",
      "caption": "Weekend recap #london #nightlife",
      "hashtags": [
        "london",
        "nightlife"
      ],
      "mentions": [],
      "url": "https://www.instagram.com/p/NIGH0090/",
      "commentsCount": 9,
      "firstComment": "",
      "latestComments": [],
      "dimensionsHeight": 1350,
      "dimensionsWidth": 1080,
      "displayUrl": "https://scontent.cdninstagram.com/x.jpg",
      "images": [],
      "alt": null,
      "likesCount": 380,
      "timestamp": "2026-09-12T12:00:00.000Z",
      "childPosts": [],
      "ownerFullName": "Nightlife Vibes",
      "ownerUsername": "nightlife.vibes",
      "ownerId": "1005",
      "isPinned": false,
      "isCommentsDisabled": false
    },
    {
      "inputUrl": "https://www.instagram.com/skin.by.sam/",
      "id": "1002",
      "username": "skin.by.sam",
      "url": "https://www.instagram.com/skin.by.sam",
      "fullName": "Sam Okafor",
      "biography": "Skincare without the fluff 🧴 Business inquiries: hello@skinbysam.co · collabs open",
      "externalUrls": [
        {
          "title": "",
          "url": "https://linktr.ee/skinbysam",
          "link_type": "external"
        }
      ],
      "externalUrl": "https://linktr.ee/skinbysam",
      "followersCount": 45200,
      "followsCount": 512,
      "highlightReelCount": 3,
      "isBusinessAccount": true,
      "joinedRecently": false,
      "businessCategoryName": "Digital creator",
      "private": false,
      "verified": false,
      "profilePicUrl": "https://scontent.cdninstagram.com/p.jpg",
      "profilePicUrlHD": "https://scontent.cdninstagram.com/p.jpg",
      "igtvVideoCount": 0,
      "postsCount": 412,
      "fbid": "1784",
      "latestPosts": [
        {
          "inputUrl": "https://www.instagram.com/skin.by.sam/",
          "id": "39125761352924710",
          "type": "Image",
          "shortCode": "SKIN0005",
          "caption": "Sunday reset #skincareroutine",
          "hashtags": [
            "skincareroutine"
          ],
          "mentions": [],
          "url": "https://www.instagram.com/p/SKIN0005/",
          "commentsCount": 30,
          "firstComment": "",
          "latestComments": [],
          "dimensionsHeight": 1350,
          "dimensionsWidth": 1080,
          "displayUrl": "https://scontent.cdninstagram.com/x.jpg",
          "images": [],
          "alt": null,
          "likesCount": 700,
          "timestamp": "2026-09-21T00:00:00.000Z",
          "childPosts": [],
          "ownerFullName": "Sam Okafor",
          "ownerUsername": "skin.by.sam",
          "ownerId": "1002",
          "isPinned": false,
          "isCommentsDisabled": false
        }
      ]
    },
    {
      "id": "749595475059841487",
      "text": "3 drugstore products that beat luxury skincare #skincare #cleanbeauty #dupes",
      "textLanguage": "en",
      "createTime": 1789560000,
      "createTimeISO": "2026-09-16T12:00:00.000Z",
      "isAd": false,
      "isSponsored": false,
      "isPinned": false,
      "authorMeta": {
        "id": "6812",
        "name": "glow_by_jules",
        "profileUrl": "https://www.tiktok.com/@glow_by_jules",
        "nickName": "Glow By Jules",
        "verified": false,
        "signature": "skincare on a budget 💧 collabs: jules.creator@gmail.com",
        "bioLink": "https://beacons.ai/glowbyjules",
        "privateAccount": false,
        "ttSeller": false,
        "fans": 88000,
        "heart": 1056000,
        "video": 230,
        "digg": 1200,
        "following": 300
      },
      "webVideoUrl": "https://www.tiktok.com/@glow_by_jules/video/749595475059841487",
      "diggCount": 18400,
      "shareCount": 1900,
      "playCount": 210000,
      "collectCount": 1840,
      "commentCount": 620,
      "hashtags": [
        {
          "id": "0",
          "name": "skincare",
          "title": "skincare"
        },
        {
          "id": "1",
          "name": "cleanbeauty",
          "title": "cleanbeauty"
        },
        {
          "id": "2",
          "name": "dupes",
          "title": "dupes"
        }
      ],
      "videoMeta": {
        "height": 1024,
        "width": 576,
        "duration": 31
      },
      "searchQuery": "skincare routine"
    },
    {
      "id": "796889321002805530",
      "text": "Retinol for beginners — what nobody tells you #skincare #retinol",
      "textLanguage": "en",
      "createTime": 1788955200,
      "createTimeISO": "2026-09-09T12:00:00.000Z",
      "isAd": false,
      "isSponsored": false,
      "isPinned": false,
      "authorMeta": {
        "id": "6812",
        "name": "glow_by_jules",
        "profileUrl": "https://www.tiktok.com/@glow_by_jules",
        "nickName": "Glow By Jules",
        "verified": false,
        "signature": "skincare on a budget 💧 collabs: jules.creator@gmail.com",
        "bioLink": "https://beacons.ai/glowbyjules",
        "privateAccount": false,
        "ttSeller": false,
        "fans": 88000,
        "heart": 1056000,
        "video": 230,
        "digg": 1200,
        "following": 300
      },
      "webVideoUrl": "https://www.tiktok.com/@glow_by_jules/video/796889321002805530",
      "diggCount": 7100,
      "shareCount": 640,
      "playCount": 95000,
      "collectCount": 710,
      "commentCount": 210,
      "hashtags": [
        {
          "id": "0",
          "name": "skincare",
          "title": "skincare"
        },
        {
          "id": "1",
          "name": "retinol",
          "title": "retinol"
        }
      ],
      "videoMeta": {
        "height": 1024,
        "width": 576,
        "duration": 31
      },
      "searchQuery": "skincare routine"
    },
    {
      "inputUrl": "https://www.instagram.com/private.person/",
      "error": "not_found",
      "errorDescription": "Page not found or private"
    },
    {
      "inputUrl": "https://www.instagram.com/explore/tags/cleanbeauty/",
      "id": "17841563",
      "name": "cleanbeauty",
      "postsCount": 14200000,
      "url": "https://www.instagram.com/explore/tags/cleanbeauty/",
      "topPosts": []
    }
  ],
  "discoveryInput": {},
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}' |
apify call rich_minds/instagram-creator-qualifier --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,rich_minds/instagram-creator-qualifier"
        }
    }
}
```

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/7FNmgxgekxNuwtLut/builds/gm0nzUQH7WTxf89Ns/openapi.json
