Operated by Sourcelane✓ verified
A Threads-focused scraper that runs in four modes to find and extract posts, replies, user accounts and profile details by keywords, post URLs or lists of usernames. It performs keyword and hashtag searches, date-range scanning with configurable request depth, per-query scanning that moves day-by-day, and targeted retrieval of reply trees for single posts (including optional nested reply branches). The connector returns structured records for posts and replies (publish time, full text, engagement metrics captured at run time, media type and media URLs, alt text, topic tags, hashtags, mentions, links and link previews, quoted-post references, and reply hierarchy information) and structured records for profiles (username and display name, follower counts, verification flag, biography and bio links, topics, and profile pictures including HD). Technical capabilities include web scraping of Threads content without requiring user authentication, multi-mode operation (search posts, search users, collect replies by post URL, bulk profile lookup), configurable request and scanning controls per query, and collection of nested reply conversations to configurable depth.
Verified Sep 28, 3:55 AM
$0.0035
per post
Up to 100 per call. Only pay for results returned; failed calls are refunded.
| Window | Uptime | Success rate | p50 | p95 | Calls |
|---|---|---|---|---|---|
| 24h | — | — | — | — | 0 |
| 7d | — | — | — | — | 0 |
| 30d | — | — | — | — | 0 |
Call it through Sourcelane's gateway or MCP server. We run the connector, apply your agent's spend guardrails, and bill only the results returned.
Call it via Sourcelane
curl -X POST https://api.usesourcelane.com/v1/call \
-H "Authorization: Bearer sl_live_your_agent_key" \
-H "Content-Type: application/json" \
-d '{"listing":"threads-search-scraper","params":{"mode":"searchPosts","maxPostsPerQuery":5},"maxResults":10}'Request params
| Field | Type | Required | Description |
|---|---|---|---|
mode | string | optional | Search posts: keyword search with optional date range. Search users: find accounts matching a keyword. Replies on post URLs: the post plus its replies. Profile details: bio, follower count, verified badge and bio links for a list of usernames. |
searchQueries | array | optional | Keywords, phrases or #hashtags to search for, one per line. Used by 'Search posts' and 'Search users'. Short keywords return the most results. |
startDate | string | optional | Search posts only: oldest day to include (YYYY-MM-DD). Leave empty to start from the latest posts and walk back day by day until the limits below are reached. |
endDate | string | optional | Search posts only: newest day to include (YYYY-MM-DD). Leave empty for today. Set it to continue an earlier run further back in time. |
maxPostsPerQuery | integer | optional | Search posts only: stop after this many unique posts for each keyword. 0 = no limit (bounded by Max requests per keyword). Capped at 100 per call. |
maxRequestsPerKeyword | integer | optional | Search posts only: each request covers one day and returns up to about 20 posts. This caps how many days are scanned per keyword. |
includeProfileDetails | boolean | optional | Search users only: also fetch bio, follower count and bio links for every user found. Without it you get username, name, verified badge and picture. |
postUrls | array | optional | Replies mode only: Threads post URLs, one per line (threads.com/@user/post/CODE, threads.net links and threads.com/t/CODE all work). |
includeOriginalPost | boolean | optional | Replies mode only: add a row for the post itself (and any follow-up posts the author added to the thread) before its replies. |
includeNestedReplies | boolean | optional | Replies mode only: also open every reply that has its own replies and collect those (one extra request per reply branch, bounded by Max requests per post). |
maxRepliesPerPost | integer | optional | Replies mode only: stop after this many reply rows for each post. 0 = no limit. |
maxRequestsPerPost | integer | optional | Replies mode only: cap on requests used for one post, including the first one. Only matters when replies to replies are included. |
usernames | array | optional | Profile details mode only: Threads usernames or profile URLs, one per line (with or without @). |
Each result contains
| Field | Type | Description |
|---|---|---|
type | string | Type |
username | string | Username |
userId | string | — |
fullName | string | — |
profileUrl | string | — |
isVerified | boolean | Verified |
isPrivate | boolean | — |
biography | string | — |
followerCount | integer | Followers |
bioLinks | array | — |
topics | array | — |
profilePicUrl | string | — |
profilePicUrlHd | string | — |
searchQuery | null | Keyword |
detailsFetched | boolean | — |
Pick your tool and connect in under a minute. Then just ask — for example: “Find this creator's profiles on every social network and summarise their reach.”
Connect Claude
Web, desktop and mobile. Paste one URL.
Adds the Sourcelane MCP server with your key as a header.
claude mcp add --transport http sourcelane https://api.usesourcelane.com/mcp \
--header "Authorization: Bearer sl_live_your_agent_key"Alternative to the connector URL: add to claude_desktop_config.json, then restart Claude.
{
"mcpServers": {
"sourcelane": {
"command": "npx",
"args": [
"-y",
"mcp-remote",
"https://api.usesourcelane.com/mcp",
"--header",
"Authorization:${AUTH_HEADER}"
],
"env": {
"AUTH_HEADER": "Bearer sl_live_your_agent_key"
}
}
}
}Add to ~/.cursor/mcp.json (or Windsurf's mcp_config.json).
{
"mcpServers": {
"sourcelane": {
"url": "https://api.usesourcelane.com/mcp",
"headers": {
"Authorization": "Bearer sl_live_your_agent_key"
}
}
}
}Save as .vscode/mcp.json. VS Code prompts for your key once.
{
"servers": {
"sourcelane": {
"type": "http",
"url": "https://api.usesourcelane.com/mcp",
"headers": {
"Authorization": "Bearer ${input:sourcelane-key}"
}
}
},
"inputs": [
{
"type": "promptString",
"id": "sourcelane-key",
"description": "Sourcelane agent key",
"password": true
}
]
}Create a GPT → Actions → Import from URL, then Authentication: API Key, Bearer.
https://usesourcelane.com/openapi.jsonOne POST. Pass maxResults to cap cost.
curl -X POST https://api.usesourcelane.com/v1/call \
-H "Authorization: Bearer sl_live_your_agent_key" \
-H "Content-Type: application/json" \
-d '{"listing":"threads-search-scraper","params":{"mode":"searchPosts","maxPostsPerQuery":5},"maxResults":10}'Wrap the REST call as a tool, or point an MCP client at the endpoint.
import requests
res = requests.post(
"https://api.usesourcelane.com/v1/call",
headers={"Authorization": "Bearer sl_live_your_agent_key"},
json={
"listing": "threads-search-scraper",
"params": {"mode":"searchPosts","maxPostsPerQuery":5},
"maxResults": 10,
},
timeout=300,
)
body = res.json()
print(body["receipt"]["chargedMicros"], "micro-USD for", body["receipt"]["results"], "results")
print(body["data"])—
0 reviews
Leave a review
Loading reviews…