Reddit Extract

Which fields can your extraction actually use?

Inspect a small PostgreSQL search response with Reddit Extract. Choose title and text deliberately, preserve missing values and define a local extraction contract.

Get API key

Request example

cURL

curl --fail-with-body -H "Authorization: Bearer YOUR_API_KEY" "https://api.redditextract.com/v1/search?q=index&subreddit=PostgreSQL&limit=3"

A PostgreSQL request with a concrete purpose

A PostgreSQL extraction can return a usable title while leaving the body column your application expects empty. Before designing a larger job, decide what that row should mean. Reddit Extract's small index search is a place to inspect available fields and write that decision down, not a promise of a ready-made table.

Reddit Extract stores individual records as flat objects rather than assembled thread trees. The service provides read access to an independent historical Reddit archive; it is not an official Reddit service or a live feed. For a transformation developer, the useful starting point is the actual shape of a returned object, not an assumption that every post and comment carries the same fields. Missing records and incomplete coverage remain possible.

Use https://api.redditextract.com/v1/search?q=index&subreddit=PostgreSQL&limit=3 as a small inspection request. Here q=index supplies the text query, subreddit=PostgreSQL selects the community and limit=3 caps the returned page at three records. It does not guarantee three matches, nor are those results necessarily representative. Send your domain API key from your server with X-API-Key or Authorization: Bearer; the website session cookie is not a retrieval credential.

A title is not a substitute for body text

Suppose your destination needs the text of a record. Keep an available title and an available text value separate during inspection. If you later combine them, label the result as your own derived content and retain which field supplied it. A title matching index does not establish that the body discusses indexes. This distinction helps a reader of your output tell a source value from a fallback chosen by your code.

Decide what a missing value means

For each object, distinguish an absent property, an explicit null, an empty string and a value of the expected type. A missing score must not silently become zero, and missing text must not be presented as evidence that a discussion had no content. Keep the original object available for comparison. Choose nullable destination columns or an explicit local validation result according to your application, rather than treating a default as an observed archive value.

You may encounter identifiers, title or text content, community information, scores and time values, but validate each field that is present before using it. Your local projection can retain an identifier and available text while omitting fields it does not need. That selection happens in your code: the API does not offer a field-selection query parameter or generate a destination schema for your database. Preserve identifiers as identifiers rather than deriving numerical meaning from them.

Keep references without inventing a conversation

If parent_id or link_id is available, you can keep it as a reference for a later local join. Such references do not mean that the parent, all replies or a complete thread were returned. For an extraction job that needs only row-level text, joining a conversation may be unnecessary. Record your choice explicitly so a missing relationship is not mistaken for a parsing failure.

The documented retrieval filters are q, subreddit, author, kind, from, to, min_score, limit and page where supported by the route. kind uses post or comment. min_score filters records; it does not sort them. Results follow archive _doc order, not chronological, relevance or score order. At most 100 records per request and 100 pages per query bound retrieval, without promising an exhaustive export or identical results on a later run.

Finish with a usable extraction contract

Before mapping anything, save the response you actually received alongside the request parameters and your local collection time. This is your own input fixture, not a provider-issued schema export. If the page is empty, keep that outcome as an empty retrieval rather than fabricating a sample record. A successful empty request still costs one credit, while inspecting the saved response again makes no additional API request.

Each successful retrieval costs one credit, including an empty result. The price is $1 per 1000 successful requests, and a $50 minimum paid top-up adds 50000 paid credits. An optional 100-credit trial depends on network-wide anti-abuse eligibility. Keys and balances belong to the redditextract.com account, not every site in the network. Paid credits do not expire and there is no subscription; these terms do not guarantee archive availability.

The useful result of this first pass is a short contract: which source property feeds each output column, which states you accept and what you retain for review. Follow the guide to test those rules against saved input. Use the documentation for retrieval parameters and the key page when you are ready to run the same bounded request from your server.