Changelog

What's shipped on the UGC Scraper API. Real, dated entries; we don't log every internal change, just what changes for you.

  1. Refresh works for posts with no visible comments

    POST /v1/refresh and scrapes with "fresh": true now return a result for a post with no visible comments instead of failing it as "could not be retrieved": a post nobody has commented on yet, or one whose only comments Reddit doesn't show publicly (removed or filtered). It comes back with "comments": [] and num_comments as Reddit counts it, which can include the hidden ones. Under heavy refresh volume some items may come back without a live upvote count; the comment count and comment scores are still current.

  2. A clear 404 for users and subreddits that don't exist

    Listings (POST /v1/subreddit, /v1/user, /v1/user/comments, /v1/search), POST /v1/user/profile and POST /v1/subreddit/rules now answer 404 when Reddit says the user or subreddit doesn't exist or is no longer available (deleted, suspended, banned or private), instead of a 502 that suggested retrying. No slot is charged.

  3. A clear 404 for posts that don't exist

    POST /v1/scrape now answers 404 with "That post doesn't exist or is no longer available on Reddit." when Reddit has no such post (a mistyped or made-up link, a post Reddit removed, or a private or banned community), instead of a 502 that suggested retrying. POST /v1/refresh items say "post not found or no longer available". Neither costs a slot, and there is no point retrying them.

  4. Fresh scrapes return every current comment

    A scrape with "fresh": true, and the snapshot saved by POST /v1/refresh, now include every comment Reddit shows on the thread right now, including comments posted minutes ago and comments approved after they were first held back. Before this, some of those could be missing or show as removed.

  5. Current comments and upvotes on demand

    POST /v1/scrape accepts "fresh": true to return the post and all of its comments exactly as Reddit shows them right now, including comments posted minutes ago and current upvotes, for the same one slot (5 to 30 seconds). The Playground has a matching Current numbers checkbox on the Post tab. Without it, a scrape stays fast and returns the thread as of its most recent capture.

  6. Refresh reads live numbers

    POST /v1/refresh now returns the score, comment count and comment scores Reddit shows right now, never a previously captured value. Each item takes about 10 seconds; a call stops after 4 minutes and returns the inputs it did not reach as failed, at no cost, so you can send them again.

  7. Response headers trimmed

    X-RPS-Latency-Ms is no longer sent; measure round-trip time on your side if you need it. X-RPS-Cache and the quota headers are unchanged.

  8. Clearer failure text

    Items that fail in POST /v1/refresh now say "could not be retrieved"; the client packages (0.2.1) report an unexpected upstream response by its HTTP status instead of echoing the page.

  9. Client packages 0.2.0

    ugc-scraper-reddit-mcp (13 tools) on npm and ugcscraper-helper (15 functions) on PyPI now cover every endpoint and document key permissions.

  10. Profile fields that were empty now populate

    POST /v1/user/profile returns the account id, avatar, bio and NSFW flag. Releases no longer interrupt in-flight requests.

  11. Named API keys with permissions

    Keys have a name and can be limited to specific features (posts, listings, search, profiles, rules). A key that lacks a permission gets a clear 403 naming the one it needs. Manage them on the dashboard's API keys page.

  12. Cleaner responses and a fuller status page

    Key ids in GET /v1/account are opaque strings, validation errors are one plain sentence with a request id, and history rows carry only the fields in the API reference. The status page shows a 30-day success-rate history and an independent external monitor (GET /v1/status/history).

  13. A stored copy when a post can't be fetched

    If a post can't be retrieved right now, POST /v1/scrape can answer from the most recent stored copy, marked with stale_as_of in the body and X-RPS-Cache: STALE in the headers, instead of failing.

  14. Current search results and real "top" ordering

    POST /v1/search returns current posts (results could previously be months old), sort: "top" returns top posts rather than the newest, every listing row carries a score, and POST /v1/user supports after/before cursors. Search has no cursor and says so clearly.

  15. Sign in by email

    The dashboard signs you in with a link sent to your email address. New accounts confirm their address first, and API keys are created by you on the keys page rather than issued at sign-up.

  16. Added subreddit rules endpoint

    POST /v1/subreddit/rules returns a subreddit's posting rules (title, description, violation reason) as JSON. Made more reliable on 2026-09-10.

  17. Improved reliability of user profile scraping

    Tuned retry timing and failure handling for POST /v1/user/profile so profile requests fail fast on a genuinely nonexistent account instead of timing out.

  18. Added Reddit user profile endpoint

    POST /v1/user/profile returns a user's public karma, account age, trophies, and moderator status.

  19. Added bulk refresh and cursor pagination

    POST /v1/refresh re-checks score, comment count, and removed-status for up to 150 posts in one call. Listing endpoints (subreddit, user comments) gained an after/before cursor for paging past a single page of results.

  20. Added CSV export and listing endpoints

    History endpoints gained ?format=csv. Added POST /v1/subreddit, /v1/user, and /v1/search for pulling post listings without scraping each one individually.

  21. Initial public launch

    POST /v1/scrape for Reddit posts and their full comment threads, with durable scrape history.