Instagram Keyword Search 🔍 Posts & Reels — $1/1K avatar

Instagram Keyword Search 🔍 Posts & Reels — $1/1K

Pricing

from $0.53 / 1,000 post discovereds

Go to Apify Store
Instagram Keyword Search 🔍 Posts & Reels — $1/1K

Instagram Keyword Search 🔍 Posts & Reels — $1/1K

Search Instagram by keyword or hashtag and extract posts, Reels and carousels: permalink, caption, author, media URL and engagement when exposed. Pay per event + usage — you pay compute and proxy.

Pricing

from $0.53 / 1,000 post discovereds

Rating

0.0

(0)

Developer

viralanalyzer

viralanalyzer

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

7 hours ago

Last modified

Share

🔍 Instagram Keyword Search Scraper — Posts & Reels

🔗 View on Apify Store | 🇺🇸 English | 🇧🇷 Português

Search Instagram by keyword or hashtag and extract matching posts, Reels, and carousels. Get permalinks, captions, authors, media URLs, hashtags, mentions, and engagement when Instagram exposes them. Playwright cascade: cookie seeding → keyword explore XHR → hashtag page → embedded JSON → DOM links. No Meta API key.

✨ Features

  • 🔍 Keyword & hashtag search — Single-word (travel) and multi-word (sunset photography)
  • 📝 Posts, Reels & Carousels — Discover content from Instagram search, not from a profile you already know
  • 📊 Engagement when exposed — Likes, comments, video views, duration
  • 🏷️ Hashtags & mentions — Parsed from the caption
  • 🧵 Multiple keywords — Process a batch in one run
  • 🍪 Cookie support — Optional session cookies when Instagram shows a login wall
  • 🔄 Strategy cascade — Explore XHR → hashtag page → embedded JSON → DOM permalinks
  • 🛡️ Stealth browsing — Webdriver flag removal and basic fingerprint spoofing
  • 🌐 Proxy control — Datacenter default; residential only after a confirmed block
  • Contract + provenance — Invalid items are dropped, never billed
  • 📷 Debug screenshots — Saved to KV Store when a keyword yields zero posts

🧭 Capabilities & Limits

Discover bySupported?Notes
Keyword / search query (keywords)✅ YesPrimary input. Returns posts/Reels/carousels.
Hashtag (#tag as a keyword)✅ YesAlso opens /explore/tags/{tag}/ as fallback.
Handle / username (profiles)❌ NoThis actor searches by keyword. Use the Reels & Posts Scraper for profiles.
Post / Reel URL❌ NoSearch results only.
Accounts / places typeahead❌ Nov1.0 typeahead was replaced. This actor returns posts.

Output includes: post URL ✅ · shortcode ✅ · type ✅ · caption ✅ (when the media node has it) · author ✅ (when exposed) · likes/comments/views ✅ (XHR/embedded) or null on DOM fallback · hashtags/mentions ✅ (from caption) · comment text ❌.

📥 Input

ParameterTypeRequiredDefaultDescription
keywordsstring[]YesKeywords or hashtags (sunset photography, #fitness)
maxPostsintegerNo10Max posts per keyword (1–100 in this version)
maxResultsintegerNoAlias of maxPosts (unified vocabulary)
seedsstring[]NoAlias of keywords when seedType is keyword
seedTypestringNokeywordOnly keyword is supported
cookiesobject[]NoOptional {name, value, domain} session cookies
proxyConfigproxyNoApify DCDatacenter default

Input Example

{
"keywords": ["sunset photography", "#fitness"],
"maxPosts": 10
}

With cookies for authenticated access:

{
"keywords": ["sunset photography"],
"maxPosts": 10,
"cookies": [
{
"name": "sessionid",
"value": "your-session-id",
"domain": ".instagram.com"
}
]
}

📤 Output

FieldTypeDescription
keywordstringKeyword that produced this item
idstring | nullInstagram media id when exposed
shortCodestringShortcode used in the permalink
urlstringhttps://www.instagram.com/p/{code}/ or /reel/
typestringpost, reel, or carousel
captionstringCaption text when present
authorstring | nullUsername when the media node includes it
timestampstring | nullISO 8601 UTC publish time
likesCountinteger | nullLikes when exposed
commentsCountinteger | nullComment count (no comment text)
videoViewCountinteger | nullPlays/views for video
videoDurationnumber | nullDuration in seconds
displayUrlstring | nullThumbnail / display image
hashtagsstring[]Parsed from caption
mentionsstring[]Parsed from caption
sourcestringxhr, embedded, or dom
_dataQualitystringfull, dom_only_no_metrics, or diagnostic
scrapedAtstringISO 8601 UTC collection time

Missing engagement is null, never invented. DOM-only items have permalink + shortcode and _dataQuality: "dom_only_no_metrics".

Output Example

{
"keyword": "sunset photography",
"id": "3315678901234567890",
"shortCode": "DFxRtPqWsYz",
"url": "https://www.instagram.com/p/DFxRtPqWsYz/",
"type": "post",
"caption": "Golden hour in Lisbon #travel #sunset",
"author": "citywalks",
"timestamp": "2026-08-10T19:12:00Z",
"likesCount": 1842,
"commentsCount": 36,
"videoViewCount": null,
"videoDuration": null,
"displayUrl": "https://scontent.cdninstagram.com/v/t51.2885-15/428573961_1234567890.jpg",
"hashtags": ["travel", "sunset"],
"mentions": [],
"source": "xhr",
"_dataQuality": "full",
"scrapedAt": "2026-08-16T20:00:00Z"
}

📋 Use Cases

  • 🔎 Trend monitoring — See what Instagram surfaces for a topic or hashtag
  • 🏷️ Hashtag research — Collect real posts behind a tag, not just the tag page title
  • 📊 Market research — Caption language, hashtags, and engagement patterns by keyword
  • 🤖 Seed generation — Feed authors into the Reels & Posts Scraper for a full profile pull
  • 📈 Campaign tracking — Watch branded keywords over time

❓ FAQ

Q: Does this use the official Instagram Graph API? A: No. Graph API does not offer anonymous keyword search of public posts. This actor reads Instagram's public web search UI.

Q: Does it work without logging in? A: Often yes, via homepage cookie seeding. A login wall is common. If you get _blockReason: BLOCKED, provide cookies (sessionid).

Q: Why are likes null on some rows? A: DOM fallback found a real permalink but the media JSON did not include metrics. _dataQuality is dom_only_no_metrics. Those rows are still real posts.

Q: Why is maxPosts capped at 100? A: Cost control. This is Playwright. A 10,000-post crawl is not safe until we have a measured cost curve.

Q: Who pays compute and proxy? A: You do. Pricing is Pay per event + usage. Events cover each valid post; compute units and Apify proxy are billed to the run owner. The publisher does not absorb Playwright or residential cost.

Q: What happens on zero posts? A: Confirmed login wall or an empty set from Instagram → SUCCEEDED + one diagnostic item, no PPE. Parser drift or no origin response → FAIL with status, URL, HTML size, intercept count and proxy flag.

💰 Pricing

Pay Per Event + platform usage (client pays CU, traffic and Apify proxy):

EventPrice
apify-actor-start$0.00005 (platform default; 1× per GB of memory)
post-discovered$0.001 per valid post ($1.00 / 1,000)

Example: 5 keywords × 10 posts = 50 items = $0.05 in events, plus the run's compute/proxy on your Apify invoice.

Diagnostics are never charged. Free-plan users are capped at 5 posts per keyword.

📝 Changelog

v1.1.0 (Current)

  • Product is posts/Reels by keyword, not typeahead users/hashtags/places
  • PPE event post-discovered; incremental charge; owner-skip
  • Platform usage paid by the client (isPPEPlatformUsagePaidByUser)
  • UAG-SG only on confirmed block or empty origin
  • Residential fallback only after a confirmed block
  • Default run: 2048 MB / 600 s

v1.0

  • Typeahead search (users / hashtags / places) — superseded

🔍 Instagram Keyword Search Scraper — Posts e Reels

🇺🇸 English | 🇧🇷 Português

Pesquise por keyword ou hashtag no Instagram e extraia posts, Reels e carrosséis. Permalink, legenda, autor, URL de mídia, hashtags, menções e engajamento quando o Instagram expõe. Cascata Playwright: cookie seeding → explore XHR → página de hashtag → JSON embutido → links DOM. Sem chave da API da Meta.

✨ Funcionalidades

  • 🔍 Busca por keyword e hashtag — Uma palavra (viagem) ou várias (pôr do sol lisboa)
  • 📝 Posts, Reels e carrosséis — Conteúdo da busca, não de um perfil que você já conhece
  • 📊 Engajamento quando exposto — Curtidas, comentários, views, duração
  • 🏷️ Hashtags e menções — Extraídas da legenda
  • 🧵 Várias keywords — Um único run
  • 🍪 Cookies opcionais — Quando o Instagram pede login
  • 🔄 Cascata de estratégias — XHR da busca → hashtag → JSON embutido → permalinks DOM
  • 🛡️ Navegação stealth — Remoção da flag webdriver
  • 🌐 Proxy — Datacenter padrão; residencial só após bloqueio confirmado
  • Contrato + proveniência — Item inválido é descartado, nunca cobrado
  • 📷 Screenshots de debug — Salvos no KV Store se a keyword não render posts

🧭 Capacidades e Limites

Descobrir porSuportado?Observações
Keyword / busca (keywords)✅ SimEntrada principal. Devolve posts/Reels/carrosséis.
Hashtag (#tag como keyword)✅ SimTambém abre /explore/tags/{tag}/ como fallback.
Handle / username (profiles)❌ NãoEste actor busca por keyword. Use o Reels & Posts Scraper para perfis.
URL de post / Reel❌ NãoSó resultados de busca.
Autocomplete de contas/lugares❌ NãoO v1.0 typeahead foi substituído. Este actor devolve posts.

A saída inclui: URL do post ✅ · shortcode ✅ · tipo ✅ · legenda ✅ (quando o nó de mídia tem) · autor ✅ (quando exposto) · likes/comentários/views ✅ (XHR/embutido) ou null no fallback DOM · hashtags/menções ✅ · texto de comentário ❌.

📥 Entrada

ParâmetroTipoObrigatórioPadrãoDescrição
keywordsstring[]SimKeywords ou hashtags
maxPostsinteiroNão10Máximo de posts por keyword (1–100)
maxResultsinteiroNãoAlias de maxPosts
cookiesobjeto[]NãoCookies de sessão opcionais
proxyConfigproxyNãoDC ApifyDatacenter padrão

Exemplo de Entrada

{
"keywords": ["sunset photography", "#fitness"],
"maxPosts": 10
}

📤 Saída

Campos iguais à tabela em inglês. Itens só-DOM têm permalink + shortcode e _dataQuality: "dom_only_no_metrics". Engajamento ausente vem null.

📋 Casos de Uso

  • 🔎 Monitoramento de tendência — O que o Instagram mostra para um tema
  • 🏷️ Pesquisa de hashtags — Posts reais atrás da tag
  • 📊 Pesquisa de mercado — Linguagem de caption e padrões de engajamento
  • 🤖 Geração de sementes — Autores para o scraper de perfil
  • 📈 Rastreamento de campanha — Keywords de marca ao longo do tempo

❓ Perguntas Frequentes

P: Usa a Graph API oficial? R: Não. A Graph API não oferece busca anônima de posts por keyword.

P: Funciona sem login? R: Muitas vezes sim, com cookie seeding da homepage. Login wall é comum — use cookies.

P: Por que likes vêm null? R: Fallback DOM achou permalink real sem JSON de métricas. _dataQuality = dom_only_no_metrics.

P: Por que o teto é 100? R: Custo de Playwright. Sem curva medida, 10 mil posts não é seguro.

P: Quem paga compute e proxy? R: Você. Pay per event + usage. Eventos cobrem cada post válido; CU e proxy Apify vão na conta de quem rodou.

P: E se não vier nenhum post? R: Login wall ou conjunto vazio confirmado pela origem → SUCCEEDED + diagnóstico, sem PPE. Drift ou origem muda → FAIL com status, URL, bytes e interceptações.

💰 Preços

Pay Per Event + uso de plataforma (o cliente paga CU, tráfego e proxy Apify):

EventoPreço
apify-actor-start$0.00005 (default; 1× por GB)
post-discovered$0.001 por post válido ($1,00 / 1.000)

Exemplo: 5 keywords × 10 posts = 50 itens = $0,05 em eventos, mais o compute/proxy na sua fatura Apify.

Diagnóstico nunca é cobrado. Plano free: 5 posts por keyword.

🔗 Actors Relacionados

📝 Changelog

v1.1.0 (Atual)

  • Produto = posts/Reels por keyword
  • Evento post-discovered; charge incremental; owner-skip
  • Uso de plataforma pago pelo cliente
  • UAG-SG só com bloqueio ou origem vazia confirmados
  • Residencial só após bloqueio confirmado
  • Default: 2048 MB / 600 s

v1.0

  • Busca typeahead (users / hashtags / places) — substituída