Pressfront API · Common questions
Is there a social listening API for pile-ons?
The Pressfront Trace API’s instant check (GET /v1/instant/{handle}) answers for any X or Bluesky name: how many accounts are posting about it, how many are critical, supportive or neutral, a quote from each side, the biggest accounts, how it started and who carried it. About a second if the name was traced in the last 24 hours, about a minute if not. Built for a person being piled on, not a brand dashboard.
Of 187 accounts posting at @quillandclaw.bsky.social, 135 were critical and 17 supportive.
“This is the person who lectured all of us about honesty. Read the replies and decide for yourself.”@gravelmouth.bsky.social · 40,200 followers · after this quote, 54 accounts arrived in 40 minutes (4 in the 40 before)
The demo trace: invented accounts, the real response. Try it below.
The demo key answers the instant check for its one invented name. Copy, paste, run:
curl https://pressfront.co/api/v1/instant/quillandclaw.bsky.social \
-H "Authorization: Bearer pf_live_DemoKeyForPressfrontTraceSample1"200 OK (abridged){ "handle": "@quillandclaw.bsky.social", "platform": "bluesky", "headline": "Of 187 accounts: 135 critical and 17 supportive of @quillandclaw.bsky.social.", "subline": "24 stayed neutral, 11 were not read.", "counts": { "critical": 135, "supportive": 17, "neutral": 24, "notRead": 11 }, "sides": [ { "side": "against", "label": "critical", "count": 135, "share": 0.767, "quote": { "text": "This is the person who lectured all of us about honesty. ...", "account": "@gravelmouth.bsky.social", "followers": 40200, "url": "https://bsky.app/profile/gravelmouth.bsky.social/post/3fakesf3bn2" } }, { "side": "neutral", "label": "neutral", "count": 24, "share": 0.136, "quote": null }, { "side": "with", "label": "supportive", "count": 17, "share": 0.097, "quote": null } ], "started": { "kind": "their_post", "at": "2026-10-21T20:12:00.000Z", "replies": 388, "quotes": 97 }, "trigger": { "handle": "@gravelmouth.bsky.social", "type": "quote", "arrivedAfter": 54, "arrivedBefore": 4, "minutes": 40 }, "claims": [ { "text": "the dates don't line up", "accounts": 20 }, ... ], "pace": { "state": "slowing", "line": "0 accounts arrived in the last hour." }, "brief": "# ... the whole situation as Markdown" }
With your own key it works for any X @handle or Bluesky handle. A name we have not traced in the last day is searched on the spot; if that takes longer than wait you get 202 "searching", which costs nothing, and calling again picks up the same search.
POST /v1/traces with {"name": "@handle"} reads every account it can reach, in a few minutes. Then read it in parts:
/accounts every account with its side, followers, account age and first post · /posts every post, filter by side, time, words or account · /timeline arrivals over time and the busiest stretch · /who where X says they are based and what their bios say · /sites posts on Reddit, forums and archives.
curl "https://pressfront.co/api/v1/traces/01JDEM0SAMP1E000000000000T/posts?side=critical&sort=followers&limit=2" \ -H "Authorization: Bearer pf_live_DemoKeyForPressfrontTraceSample1"
GET /v1/traces/{id}/groups lists accounts that posted within minutes of each other, posted the same words, or look alike (created together, same posting hours), and accounts that posted at the name before. These are measured matches, not proof anyone coordinated, and accounts are never labeled bots.
200 OK (abridged, demo trace){ "sameMinutes": [ { "size": 14, "minutes": 4, "accounts": [ "@ferrousbucket81.bsky.social", ... ] } ], "sameWords": [ { "size": 9, "text": "so this is what you've been doing all along. everyone screenshot this before it goes" } ], "lookAlikes": [ { "size": 3, "facts": [ "created within 26 hours of each other", "same 3 posting hours" ] } ], "repeat": [ { "handle": "@mothbucket88.bsky.social", "priorTouches": 7 }, ... ] }
POST /v1/names watches a name (10 at a time on Trace). When posts at it hit 3 times its usual 15 minutes (at least 12), we email you and post to your Slack, Discord or webhook link. GET /v1/alerts lists every alert sent. Set the link up in Settings; the payloads are on /developers.
for an instant check of a name traced in the last 24 hours. A name nobody has traced yet takes about a minute, and you never get an empty answer.
Tools like Brandwatch and Meltwater are built for brands, are faster and go back further. Pressfront is built for one name being piled on: who started it, who carried it, every account and what each one said, and it costs far less.
X and Bluesky first, plus Reddit, forums, archives and other sites we read. Public posts only. Private accounts, group chats and posts deleted before we looked are out of reach.
A language model reads each post’s text and calls it critical, supportive or neutral, and every answer says so. It is a reading, not a finding: read the posts before acting on one. Accounts are never labeled bots or paid.
No. It shows public accounts, their posts and timing. It never tries to unmask anyone.
A key comes with Trace at $149 a month, with alerts on 10 names. Pay per call on the Apify Store (Monid listing on the way): $0.49 an instant check, $4.99 a full trace, $0.05 a read.