{"openapi":"3.1.0","info":{"title":"ScrapeMole Social: Telegram, Bluesky, Mastodon, Hacker News and Lobsters data for AI agents","version":"1.0.0","description":"Pay-per-call public social data for agents: Telegram public channel posts; Mastodon hashtag timelines; Bluesky post search, profiles and author feeds; Hacker News full-text search and threads with comments; Lobsters hottest stories. Official public APIs only, no logins, no private data. USDC via x402, no accounts; failed calls are never charged.\n\nPayments: x402 v2, scheme \"exact\", USDC on Base (eip155:8453) or Solana (solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp). The payment is verified before the work and settled only when the response is 200. Terms: https://social.scrapemole.workers.dev/terms","contact":{"email":"edgaras@mail.grokbot.com","url":"https://scrapemole.pages.dev"},"x-guidance":"Call any /v1 endpoint without payment to receive a 402 with the exact price, then retry with an x402 client (e.g. @x402/fetch). 4xx/5xx responses are never charged."},"servers":[{"url":"https://social.scrapemole.workers.dev"}],"components":{"securitySchemes":{"x402":{"type":"http","scheme":"x402","description":"HTTP 402 payment with USDC via the x402 protocol."}}},"paths":{"/v1/bluesky/search":{"get":{"operationId":"blueskySearch","summary":"Search public Bluesky posts by keyword: text, author, time, likes/reposts/replies, links, and post URL. Sort by latest or top.","description":"Use for real-time social listening, brand/topic mentions and sentiment research on Bluesky: returns up to 50 public posts matching a query (supports from:handle, #tags, since:/until: dates via Bluesky search syntax) with text, author handle/display name, createdAt, engagement counts, outbound links and a bsky.app URL. Optional cursor for pagination.","tags":["social","bluesky","search","posts","social-listening","sentiment","twitter-alternative","mentions"],"parameters":[{"name":"q","in":"query","required":true,"description":"Search query (Bluesky search syntax).","schema":{"type":"string","examples":["x402"]}},{"name":"sort","in":"query","required":false,"description":"\"latest\" or \"top\".","schema":{"type":"string","default":"latest"}},{"name":"limit","in":"query","required":false,"description":"Max posts (1-50).","schema":{"type":"string","default":"25"}},{"name":"cursor","in":"query","required":false,"description":"Pagination cursor from a previous response.","schema":{"type":"string"}}],"security":[{"x402":[]}],"x-payment-info":{"protocols":["x402"],"pricingMode":"fixed","price":"0.002","currency":"USD","network":"eip155:8453","networks":["eip155:8453","solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp"],"asset":"USDC"},"responses":{"200":{"description":"Result (the payment settles only for this status).","content":{"application/json":{"example":{"query":"x402","count":1,"posts":[{"url":"https://bsky.app/profile/…/post/…","text":"…","createdAt":"2026-10-12T…","author":{"handle":"…"},"likes":3}],"cursor":"25"}}}},"400":{"description":"Invalid input. Not charged.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"charged":{"type":"boolean","const":false}}}}}}}},"402":{"description":"Payment required (x402). The PAYMENT-REQUIRED header (mirrored in the body) carries price, network and payTo."},"404":{"description":"Not found / no data. Not charged.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"charged":{"type":"boolean","const":false}}}}}}}},"502":{"description":"Upstream error. Not charged.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"charged":{"type":"boolean","const":false}}}}}}}},"504":{"description":"Upstream timeout. Not charged.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"charged":{"type":"boolean","const":false}}}}}}}}}}},"/v1/bluesky/profile":{"get":{"operationId":"blueskyProfile","summary":"Public Bluesky profile by handle or DID: display name, bio, followers, following, post count, created date, avatar.","description":"Use to look up or verify a Bluesky account: returns DID, handle, display name, description (bio), follower/following/post counts, account creation time, avatar and banner URLs, and labels. Public profile data only.","tags":["social","bluesky","profile","enrichment","people","followers","influencer"],"parameters":[{"name":"actor","in":"query","required":true,"description":"Handle (e.g. bsky.app) or DID.","schema":{"type":"string","examples":["bsky.app"]}}],"security":[{"x402":[]}],"x-payment-info":{"protocols":["x402"],"pricingMode":"fixed","price":"0.001","currency":"USD","network":"eip155:8453","networks":["eip155:8453","solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp"],"asset":"USDC"},"responses":{"200":{"description":"Result (the payment settles only for this status).","content":{"application/json":{"example":{"did":"did:plc:z72i7hdynmk6r22z27h6tvur","handle":"bsky.app","displayName":"Bluesky","followers":30000000,"following":5,"posts":700,"url":"https://bsky.app/profile/bsky.app"}}}},"400":{"description":"Invalid input. Not charged.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"charged":{"type":"boolean","const":false}}}}}}}},"402":{"description":"Payment required (x402). The PAYMENT-REQUIRED header (mirrored in the body) carries price, network and payTo."},"404":{"description":"Not found / no data. Not charged.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"charged":{"type":"boolean","const":false}}}}}}}},"502":{"description":"Upstream error. Not charged.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"charged":{"type":"boolean","const":false}}}}}}}},"504":{"description":"Upstream timeout. Not charged.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"charged":{"type":"boolean","const":false}}}}}}}}}}},"/v1/bluesky/feed":{"get":{"operationId":"blueskyFeed","summary":"Recent public posts by one Bluesky account (no reposts by default) with engagement counts and links.","description":"Use to monitor what a specific Bluesky account has posted recently: returns up to 50 posts (original posts by default, optionally including replies/reposts) with text, time, likes/reposts/replies, outbound links and URLs. Cursor pagination supported.","tags":["social","bluesky","feed","posts","monitoring","timeline"],"parameters":[{"name":"actor","in":"query","required":true,"description":"Handle or DID.","schema":{"type":"string","examples":["bsky.app"]}},{"name":"filter","in":"query","required":false,"description":"\"posts\" (no replies), \"replies\" (posts and replies) or \"all\" (incl. reposts).","schema":{"type":"string","default":"posts"}},{"name":"limit","in":"query","required":false,"description":"Max posts (1-50).","schema":{"type":"string","default":"20"}},{"name":"cursor","in":"query","required":false,"description":"Pagination cursor.","schema":{"type":"string"}}],"security":[{"x402":[]}],"x-payment-info":{"protocols":["x402"],"pricingMode":"fixed","price":"0.002","currency":"USD","network":"eip155:8453","networks":["eip155:8453","solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp"],"asset":"USDC"},"responses":{"200":{"description":"Result (the payment settles only for this status).","content":{"application/json":{"example":{"actor":"bsky.app","count":1,"posts":[{"url":"https://bsky.app/profile/bsky.app/post/…","text":"…","likes":1200}]}}}},"400":{"description":"Invalid input. Not charged.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"charged":{"type":"boolean","const":false}}}}}}}},"402":{"description":"Payment required (x402). The PAYMENT-REQUIRED header (mirrored in the body) carries price, network and payTo."},"404":{"description":"Not found / no data. Not charged.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"charged":{"type":"boolean","const":false}}}}}}}},"502":{"description":"Upstream error. Not charged.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"charged":{"type":"boolean","const":false}}}}}}}},"504":{"description":"Upstream timeout. Not charged.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"charged":{"type":"boolean","const":false}}}}}}}}}}},"/v1/hn/search":{"get":{"operationId":"hnSearch","summary":"Full-text search over all Hacker News stories or comments, by relevance or date, with points, comment counts and links.","description":"Use to find what Hacker News says about a product, company, library or topic: searches stories (default) or comments across HN history, sorted by relevance or newest, optionally limited to the last N days or a minimum points threshold. Returns title, URL, author, points, comment count, time, text excerpt and the HN link. For the live HN front page, new, best, Ask HN, Show HN and job lists use ScrapeMole Pulse: https://pulse.scrapemole.workers.dev/v1/news/hn.","tags":["social","hacker-news","search","tech-news","social-listening","developers","startups"],"parameters":[{"name":"q","in":"query","required":true,"description":"Search text.","schema":{"type":"string","examples":["x402"]}},{"name":"type","in":"query","required":false,"description":"\"story\" or \"comment\".","schema":{"type":"string","default":"story"}},{"name":"sort","in":"query","required":false,"description":"\"relevance\" or \"date\".","schema":{"type":"string","default":"relevance"}},{"name":"days","in":"query","required":false,"description":"Only items from the last N days (1-3650).","schema":{"type":"string"}},{"name":"minPoints","in":"query","required":false,"description":"Minimum points (stories).","schema":{"type":"string"}},{"name":"limit","in":"query","required":false,"description":"Max hits (1-50).","schema":{"type":"string","default":"20"}}],"security":[{"x402":[]}],"x-payment-info":{"protocols":["x402"],"pricingMode":"fixed","price":"0.001","currency":"USD","network":"eip155:8453","networks":["eip155:8453","solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp"],"asset":"USDC"},"responses":{"200":{"description":"Result (the payment settles only for this status).","content":{"application/json":{"example":{"query":"x402","count":1,"hits":[{"id":"45000000","type":"story","title":"…","url":"https://…","points":120,"comments":45,"hnUrl":"https://news.ycombinator.com/item?id=45000000"}]}}}},"400":{"description":"Invalid input. Not charged.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"charged":{"type":"boolean","const":false}}}}}}}},"402":{"description":"Payment required (x402). The PAYMENT-REQUIRED header (mirrored in the body) carries price, network and payTo."},"404":{"description":"Not found / no data. Not charged.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"charged":{"type":"boolean","const":false}}}}}}}},"502":{"description":"Upstream error. Not charged.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"charged":{"type":"boolean","const":false}}}}}}}},"504":{"description":"Upstream timeout. Not charged.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"charged":{"type":"boolean","const":false}}}}}}}}}}},"/v1/hn/thread":{"get":{"operationId":"hnThread","summary":"One Hacker News story with its comment tree flattened (author, text, depth), capped for LLM context.","description":"Use to read the discussion on a Hacker News post: returns the story (title, URL, points, author, time) and up to N comments in thread order with depth, author, time and plain text (HTML stripped). Good for summarising community reaction to a launch. For the live HN front page, new, best, Ask HN, Show HN and job lists use ScrapeMole Pulse: https://pulse.scrapemole.workers.dev/v1/news/hn.","tags":["social","hacker-news","comments","discussion","sentiment","thread"],"parameters":[{"name":"id","in":"query","required":true,"description":"HN item id (story).","schema":{"type":"string","examples":["8863"]}},{"name":"limit","in":"query","required":false,"description":"Max comments (1-300).","schema":{"type":"string","default":"100"}}],"security":[{"x402":[]}],"x-payment-info":{"protocols":["x402"],"pricingMode":"fixed","price":"0.002","currency":"USD","network":"eip155:8453","networks":["eip155:8453","solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp"],"asset":"USDC"},"responses":{"200":{"description":"Result (the payment settles only for this status).","content":{"application/json":{"example":{"id":8863,"title":"My YC app: Dropbox - Throw away your USB drive","points":104,"commentCount":70,"comments":[{"depth":1,"author":"…","text":"…"}]}}}},"400":{"description":"Invalid input. Not charged.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"charged":{"type":"boolean","const":false}}}}}}}},"402":{"description":"Payment required (x402). The PAYMENT-REQUIRED header (mirrored in the body) carries price, network and payTo."},"404":{"description":"Not found / no data. Not charged.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"charged":{"type":"boolean","const":false}}}}}}}},"502":{"description":"Upstream error. Not charged.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"charged":{"type":"boolean","const":false}}}}}}}},"504":{"description":"Upstream timeout. Not charged.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"charged":{"type":"boolean","const":false}}}}}}}}}}},"/v1/lobsters/hot":{"get":{"operationId":"lobstersHot","summary":"Current Lobsters front page (hottest or newest) with tags, score, comment count and links.","description":"Use to see what programmers on Lobsters are discussing right now: returns up to 25 stories from the hottest or newest page, optionally filtered to one tag, with title, URL, score, comment count, tags, submitter and time.","tags":["social","lobsters","tech-news","developers","trending"],"parameters":[{"name":"list","in":"query","required":false,"description":"\"hottest\" or \"newest\".","schema":{"type":"string","default":"hottest"}},{"name":"tag","in":"query","required":false,"description":"Optional tag, e.g. rust, ai, security.","schema":{"type":"string"}},{"name":"limit","in":"query","required":false,"description":"Max stories (1-25).","schema":{"type":"string","default":"25"}}],"security":[{"x402":[]}],"x-payment-info":{"protocols":["x402"],"pricingMode":"fixed","price":"0.002","currency":"USD","network":"eip155:8453","networks":["eip155:8453","solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp"],"asset":"USDC"},"responses":{"200":{"description":"Result (the payment settles only for this status).","content":{"application/json":{"example":{"list":"hottest","count":1,"stories":[{"title":"…","url":"https://…","score":40,"comments":12,"tags":["rust"]}]}}}},"400":{"description":"Invalid input. Not charged.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"charged":{"type":"boolean","const":false}}}}}}}},"402":{"description":"Payment required (x402). The PAYMENT-REQUIRED header (mirrored in the body) carries price, network and payTo."},"404":{"description":"Not found / no data. Not charged.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"charged":{"type":"boolean","const":false}}}}}}}},"502":{"description":"Upstream error. Not charged.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"charged":{"type":"boolean","const":false}}}}}}}},"504":{"description":"Upstream timeout. Not charged.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"charged":{"type":"boolean","const":false}}}}}}}}}}},"/v1/telegram/channel":{"get":{"operationId":"telegramChannel","summary":"Latest posts from any public Telegram channel (newest first): text, date, views, links, media flags, plus channel title, description and subscriber count. Optional keyword search inside the channel.","description":"Use to monitor or research public Telegram channels (crypto, news, project announcements, signals): pass a channel username (e.g. durov, telegram, or a t.me link) and get up to 20 recent posts with text, ISO date, view count, outbound links, forwarded-from, photo/video flags and t.me post URLs, plus the channel title, bio and subscriber count. Add q= to search posts within that channel, before= to page back. Only public channels with the web preview enabled; no login, no private chats or groups.","tags":["social","telegram","channel","posts","crypto","news","monitoring","social-listening","announcements"],"parameters":[{"name":"channel","in":"query","required":true,"description":"Public channel username or t.me link.","schema":{"type":"string","examples":["durov"]}},{"name":"q","in":"query","required":false,"description":"Optional keyword search within the channel.","schema":{"type":"string"}},{"name":"before","in":"query","required":false,"description":"Return posts older than this post id (pagination).","schema":{"type":"string"}},{"name":"limit","in":"query","required":false,"description":"Max posts (1-20).","schema":{"type":"string","default":"20"}}],"security":[{"x402":[]}],"x-payment-info":{"protocols":["x402"],"pricingMode":"fixed","price":"0.002","currency":"USD","network":"eip155:8453","networks":["eip155:8453","solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp"],"asset":"USDC"},"responses":{"200":{"description":"Result (the payment settles only for this status).","content":{"application/json":{"example":{"channel":{"username":"durov","title":"Pavel Durov","subscribers":10400000},"count":1,"posts":[{"id":553,"url":"https://t.me/durov/553","date":"2026-10-10T12:00:00+00:00","text":"…","views":5800000}],"nextBefore":531}}}},"400":{"description":"Invalid input. Not charged.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"charged":{"type":"boolean","const":false}}}}}}}},"402":{"description":"Payment required (x402). The PAYMENT-REQUIRED header (mirrored in the body) carries price, network and payTo."},"404":{"description":"Not found / no data. Not charged.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"charged":{"type":"boolean","const":false}}}}}}}},"502":{"description":"Upstream error. Not charged.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"charged":{"type":"boolean","const":false}}}}}}}},"504":{"description":"Upstream timeout. Not charged.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"charged":{"type":"boolean","const":false}}}}}}}}}}},"/v1/mastodon/tag":{"get":{"operationId":"mastodonTag","summary":"Recent public Mastodon/fediverse posts for a hashtag: text, author, time, boosts, favourites, replies, links and post URL.","description":"Use for fediverse social listening on a topic or brand hashtag: returns up to 40 recent public posts tagged #tag as seen by a Mastodon instance (mastodon.social by default, or any public instance via instance=), with plain text, author handle, createdAt, language, reblog/favourite/reply counts, tags and URLs. Public posts only, official public API, no login.","tags":["social","mastodon","fediverse","hashtag","posts","social-listening","twitter-alternative","mentions"],"parameters":[{"name":"tag","in":"query","required":true,"description":"Hashtag without #.","schema":{"type":"string","examples":["ai"]}},{"name":"instance","in":"query","required":false,"description":"Mastodon instance host.","schema":{"type":"string","default":"mastodon.social"}},{"name":"limit","in":"query","required":false,"description":"Max posts (1-40).","schema":{"type":"string","default":"20"}},{"name":"max_id","in":"query","required":false,"description":"Pagination: posts older than this id.","schema":{"type":"string"}}],"security":[{"x402":[]}],"x-payment-info":{"protocols":["x402"],"pricingMode":"fixed","price":"0.001","currency":"USD","network":"eip155:8453","networks":["eip155:8453","solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp"],"asset":"USDC"},"responses":{"200":{"description":"Result (the payment settles only for this status).","content":{"application/json":{"example":{"tag":"ai","instance":"mastodon.social","count":1,"posts":[{"url":"https://mastodon.social/@user/1174…","text":"…","author":"user@mastodon.social","createdAt":"2026-10-13T18:04:52.040Z","favourites":2}]}}}},"400":{"description":"Invalid input. Not charged.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"charged":{"type":"boolean","const":false}}}}}}}},"402":{"description":"Payment required (x402). The PAYMENT-REQUIRED header (mirrored in the body) carries price, network and payTo."},"404":{"description":"Not found / no data. Not charged.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"charged":{"type":"boolean","const":false}}}}}}}},"502":{"description":"Upstream error. Not charged.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"charged":{"type":"boolean","const":false}}}}}}}},"504":{"description":"Upstream timeout. Not charged.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"charged":{"type":"boolean","const":false}}}}}}}}}}}}}