Threads Post Comments API reference
Your first 10 calls are free, no card needed. Pricing and FAQ
Get a free API keycurl "https://api.insightsocial.app/v1/threads/post/comments?url=https%3A%2F%2Fwww.threads.com%2F%40zuck%2Fpost%2FDZpPDXbCeTt" \ -H "x-api-key: $INSIGHTSOCIAL_API_KEY"
Returns the replies Threads bundles with a post, usually about 20. Send limit above 25 (up to 50) to collect more first-level replies from a second source.
Use it to read the reaction under a post you already have the URL for. It is one window with no cursor. Set limit above 25 when the bundled window is not enough.
Metered: 10–100 credits. We reserve the ceiling when the call starts and charge what it actually used when it finishes.
Authorization
apiKey Your key from the dashboard. It starts with isk_.
In: header
Query Parameters
Full URL of the Threads post whose replies you want, for example https://www.threads.com/@zuck/post/DZpPDXbCeTt. Both threads.com and threads.net are accepted.
Ask for a stripped record. This is a real shape change, not just less whitespace: a trimmed row carries only the id, text, shortcode, like count, timestamp and author, so media, reply count, share count, view count, topic tag, pinned flag and quoted post all come back null. Ignored when limit is above 25, because the deeper source has no trimmed mode.
How many replies to collect, 1 to 50. Leave it off, or send 25 or less, and nothing changes: you get the bundled window. Threads publishes only part of a large conversation without a login, so a post declaring a thousand replies will still return about 50.
1 <= value <= 50Only rows published on or after this date: YYYY-MM-DD (midnight UTC) or an ISO 8601 timestamp. Rows older than it are left off each page. This list is not in date order, so the walk does not stop at the date: keep following next_cursor, and each page costs what a page costs even when every row on it is filtered out. A row with no date is kept.
Only rows published on or before this date: YYYY-MM-DD (that whole UTC day is included) or an ISO 8601 timestamp. Newer rows are left off each page and the walk does not stop, so older pages follow. A row with no date is kept.
Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.
Value in
- "1"
Response Body
application/json
application/json
application/json
application/json
application/json
application/json
application/json
application/json
application/json
curl -X GET "https://api.insightsocial.app/v1/threads/post/comments?url=string"{ "success": true, "platform": "string", "endpoint": "string", "schema_version": "2", "pagination": { "next_cursor": "string", "has_more": true, "page_size": 0, "stopped_at": "since" }, "unavailable": [ "string" ], "credits_used": 0, "credits_remaining": 0, "request_id": "string", "cached": true, "idempotent_replay": true, "charge_reason": "string", "free_call": true, "data": { "items": [ { "comment": { "id": "string", "url": "http://example.com", "parent_id": "string", "post_id": "string", "text": "string", "author": { "id": "string", "username": "string", "display_name": "string", "avatar_url": "http://example.com", "verified": true }, "engagement": { "likes": 0, "replies": 0 }, "flags": { "pinned": true, "deleted": true }, "published_at": "2019-08-24T14:15:22Z", "language": "string", "replies": [ {} ], "ext": { "property1": null, "property2": null } } } ], "total": 0, "truncated": true, "ext": { "property1": null, "property2": null } }}Profile GET
Returns a public Telegram channel or group's profile: display name, description, avatar URL, verification status, and subscriber count.
Post GET
Returns one Threads post's text, like, reply and repost counts, every carousel slide or video URL, author, creation time, and topic tag at post.ext.topic_tag.