
Instagram Reel Scraper
scrape.ly/store/echofield/instagram-reel-scraperSocial mediaVideos
1 monthly user

Search public Threads posts by keyword. Sort by top or recent, filter by username or date, and export captions, media, and engagement.
Search public Threads posts by keyword, phrase, or hashtag and get one clean row per post: caption, author, media, and engagement counts. No Threads login or cookies, and results come back in seconds.
top or recent.| Field | Type | What it does |
|---|---|---|
searchQuery | string | Keywords, a phrase, or a hashtag. Required. |
maxPosts | integer | Posts to save, minimum 1. Default 10. |
sort | select | top for relevance or recent for newest. |
from | string | Keep posts from this username only. |
after | string | Keep posts from this date onward (YYYY-MM-DD, midnight UTC). |
before | string | Keep posts before this date (YYYY-MM-DD, midnight UTC). |
proxyConfiguration | object | Datacenter proxy by default. |
{
"searchQuery": "AI",
"maxPosts": 10,
"sort": "top"
}
Posts from one account, newest first:
{
"searchQuery": "AI",
"from": "google",
"sort": "recent",
"maxPosts": 10
}
One dataset row per post.
| Field | Description |
|---|---|
postId, postCode, postUrl | Post identifiers and the link to the post. |
username, userId, profilePicUrl | Author handle, id, and picture. |
isVerified, isPrivate | Author flags. |
captionText | Post text. |
likeCount, directReplyCount, repostCount, quoteCount, reshareCount | Engagement counts. |
imageUrl, videoUrl, allImages, allVideos | Media files. |
linkPreviewUrl, linkPreviewTitle | Link card, when the post has one. |
takenAt, takenAtISO, takenAtFormatted | Post time as Unix time, ISO, and formatted text (UTC). |
nextCursor | Set only when Threads reports another page. |
{
"postId": "4007142682656950389",
"postCode": "DecOwoEEsh1",
"postUrl": "https://www.threads.com/@google/post/DecOwoEEsh1",
"username": "google",
"isVerified": true,
"isPrivate": false,
"captionText": "We’re officially rolling out access to Gemini 4 Argon, our latest frontier model 🚀",
"mediaType": 2,
"originalWidth": 1920,
"originalHeight": 1080,
"likeCount": 457,
"directReplyCount": 41,
"repostCount": 41,
"quoteCount": 16,
"reshareCount": 53,
"takenAtISO": "2026-10-13T16:25:55.000Z",
"nextCursor": ""
}
The example is trimmed: the real row has 40 fields, including media URLs and tracking fields.
$0.015 per post saved, which is $15 per 1,000 posts, plus platform usage for compute and datacenter traffic. Empty searches are not charged a per-post fee.
Worked example: a 10-post search costs $0.15 in post fees, so about $0.16 in total with platform usage.
Is it legal to scrape Threads? The actor reads public posts without logging in. You are responsible for how you use the data and for following local law and platform terms.
Do I need a Threads account or a proxy? No account. A datacenter proxy is configured by default.
Why do I get fewer posts than I asked for? Signed-out Threads search returns one page, usually 10 to 30 posts. The actor saves up to your maximum from that page.
What does an empty result mean? The query matched nothing public. Try a broader keyword or remove the username and date filters.
Which timezone do the dates use? UTC. Date filters use midnight UTC.
Can I schedule it or use the API? Yes, through schedules in the console or the API.
nextCursor stays empty when Threads reports no further page, which is the usual case for signed-out search.Every field below can be set in the run form, passed through the API, or saved as a task. Unset fields fall back to the defaults shown.
searchQuerystringRequiredSearch query
Keywords, a phrase, or a hashtag to search for on Threads.
maxPostsintegerOptionaldefault 10Maximum posts
How many posts to save. Public search returns one page, usually 10 to 30 posts.
Optional username and date limits. Dates are midnight UTC.
sortenumOptionaldefault "top"Sort
Top ranks the most relevant posts. Recent returns the newest posts.
fromstringOptionalFrom username
Keep posts from this username. Leave empty to search every account.
afterstringOptionalAfter date
Keep posts from this date onward (YYYY-MM-DD, midnight UTC).
beforestringOptionalBefore date
Keep posts before this date (YYYY-MM-DD, midnight UTC).
proxyConfigurationobjectOptionaldefault {"useScrapelyProxy":true,"scrapelyProxyGroups":["DATACENTER…Proxy configuration
Datacenter proxies are used unless you choose another pool.
Every run writes its results to a dataset. Preview it in the dashboard, then export it or read it through the API.
| Field | Type | Description |
|---|---|---|
| username | string | |
| isVerified | boolean | |
| captionText | string | |
| takenAtFormatted | string | |
| likeCount | integer | |
| directReplyCount | integer | |
| repostCount | integer | |
| quoteCount | integer | |
| reshareCount | integer | |
| postUrl | string | |
| mediaType | integer | |
| imageUrl | string | |
| videoUrl | string | |
| linkPreviewUrl | string | |
| linkPreviewTitle | string | |
| userId | string | |
| profilePicUrl | string | |
| isPrivate | boolean |
You pay for the events the actor reports, such as each result or page it produces. Platform usage is included in the event prices.
| Event | Charged when | Price |
|---|---|---|
| Result | $0.015 |
Run this actor from your own code. Swap in your API token and the examples work as-is.
import { ScrapelyClient } from 'scrapely-client'
const client = new ScrapelyClient({ token: process.env.SCRAPELY_TOKEN })
// Start the actor and wait for the run to finish.
const run = await client.actor('echofield/threads-search-scraper').call({
"searchQuery": "AI",
"maxPosts": 10,
"sort": "top",
"proxyConfiguration": {
"useScrapelyProxy": true,
"scrapelyProxyGroups": [
"DATACENTER"
]
}
})
// Read the dataset the run produced.
const { items } = await client.dataset(run.defaultDatasetId).listItems()
console.log(items)Tokens live in your account settings. Keep them server-side: a token carries the full permissions of your account.
Connect the Scrape.ly MCP server once and your agent can run this actor as a tool. Pick your tool:
Fetch scrape.ly/agents.md and run echofield/threads-search-scraperPaste into Claude Code, Codex, Cursor or any AI agent. It signs you in once in the browser.
{
"mcpServers": {
"scrapely": {
"url": "https://api.scrape.ly/mcp?tools=actors,runs,storage,docs&actors=echofield/threads-search-scraper"
}
}
}No key in the file: your client opens the browser to sign you in the first time it connects.
Inputs the developer prepared for common jobs. Open one to see its input, then copy it to your account to run it as-is or adjust it.
Scrape.ly gives you the infrastructure, the tooling, and the team to extract, process, and operationalize web data at any scale. Setup takes minutes. The advantage lasts forever.