Reddit Search API

Build a historical Reddit search app with visible limits

Design query controls, interpret partial results and plan request budgets for a historical Reddit search application without assuming complete archive coverage.

Get API key

Turn a research question into search controls

Start with the question your application is supposed to answer. For example, a repair researcher might want discussions about replacing a battery within one named community and a chosen date interval. Treat the phrase, community and interval as separate controls. Keep the submitted values visible with the results, so changing a filter does not silently change the meaning of a comparison or an exported local working set.

Use /v1/search with q and the documented filters rather than constructing an arbitrary query language. The from and to values are UTC YYYY-MM-DD dates, with to inclusive. Choose kind=post or kind=comment when the two content types would answer different questions. A minimum score is an inclusion threshold, not a relevance control. The service retrieves an independent historical archive and does not describe current activity or an official view from Reddit.

Build a result view that admits missing context

The first response is a bounded set of flat records. Display the source text as content rather than executing it as application markup. Keep available identifiers and timestamps alongside locally derived labels. If parent_id or link_id is present, local grouping can help readers follow relationships among the items you have; it cannot supply missing parents or guarantee the full discussion. Avoid presenting a partial grouping as a reconstructed complete thread.

Design pagination around the actual caps: at most 100 records per request and 100 pages per query. Show whether a total is exact, a lower bound or unknown instead of displaying every number as a final match count. Reaching the cap is a reason to explain the limitation, not evidence that the query is exhausted. Narrower date intervals may organize your work, but partitioning alone proves neither exhaustive retrieval nor absence of duplicates.

Record outcomes and control the cost of retries

Separate an empty successful search from an error in your client state. Both a nonempty successful response and an empty one cost one credit. HTTP 400 calls for correcting the request; 401 calls for checking the key; 402 means the balance is insufficient; 429 calls for pausing or reducing request frequency. Upstream failures refund reserved credit. The public status route cannot establish that a failed search backend is healthy, even when it responds.

For a useful local experiment, save your filter choices, request outcomes and the returned identifiers under your own application's data-handling rules. These notes explain what you observed without promising identical future results or permanent archive access. Budget pagination and successful retries as separate requests. At $1 per 1,000 successful retrievals, compare the request count against the available balance before scheduling repeated runs; a $50 paid top-up corresponds to 50,000 credits.