Reddit has removed its public API. To keep our Reddit endpoints running, we now collect data directly from Reddit’s web pages. This page explains what changed and what you may need to check in your integration.
Summary
- Same response format. Responses keep the previous structure, with the same fields in the same order. Existing integrations should keep working without code changes.
- Keyword Search: 7 posts per call, now 1 unit per call. Use the cursor to fetch more.
- Comments: fewer comments per call, now 1 unit per call. Use the cursor to fetch more.
- Some fields are no longer available. They are returned as empty or default values (see below).
Pricing and pagination
| Endpoint | Results per call | Price | Pagination |
|---|---|---|---|
| Reddit Keyword Search | 7 posts | 1 unit per call | Pass the cursor from the response to get the next 7 posts |
| Reddit Comments | Fewer than before | 1 unit per call | Pass the cursor from the response to load more comments |
To collect more results, keep requesting the next page with the cursor until no cursor is returned.
Response format
Responses are remapped to match the previous format:
- Posts are returned as
{"kind": "t3", "data": {...}}objects with the same fields as before. - Comments are returned as
{"kind": "t1", "data": {...}}objects, with replies nested underreplies. - Core fields are unaffected: IDs, titles, authors, scores, comment counts, timestamps, subreddits and permalinks.
Video posts
Reddit-hosted videos in subreddit and user feeds include media.reddit_video:
| Field | Availability |
|---|---|
hls_url | Always filled. Streamable and downloadable, for example with ffmpeg. |
fallback_url (MP4), width, height, duration | Filled when Reddit provides an MP4 for the video, otherwise null |
dash_url, has_audio | null |
Video links expire. Download any videos you want to keep soon after fetching them, rather than storing the links.
Keyword Search results do not include video data.
Fields no longer available
These fields can’t be retrieved from Reddit’s pages and are returned as empty or default values.
All post endpoints
| Field | Now returned as |
|---|---|
subreddit_subscribers | null |
edited | false (previously a timestamp for edited posts) |
author_flair_* | empty |
media_embed, secure_media_embed | {} (embedded players such as YouTube are not included) |
Keyword Search
| Field | Now returned as |
|---|---|
selftext, selftext_html | empty |
upvote_ratio | null |
link_flair_text | null |
locked, stickied, archived | false |
media, secure_media (video data) | null |
url, domain for external link posts | null |
Comments
| Field | Now returned as |
|---|---|
edited | false |
distinguished | null |
controversiality | 0 |
author_flair_* | empty |
author_fullname | on the first page of comments, only filled for the post’s author |
more.children | [] (use the cursor to load more comments) |
What you should do
- Check your integration over the coming days and make sure everything works as expected.
- Review the fields above. If your product relies on any of them, update your logic to handle empty or default values.
- Add pagination if you need more than 7 search results or more comments per post.
- Download videos promptly if you need to keep them.
Questions?
If you notice anything unusual, such as missing data, errors or unexpected values, please contact us and we’ll look into it straight away. We’re sorry for the inconvenience this change has caused, and thank you for your patience.