← Back to Blog

Reddit Keyword Trends: A Practical Scraper Workflow

Sam WilsonSam Wilson
Reddit Marketing
Updated
Reddit Keyword Trends: A Practical Scraper Workflow
Table of Contents

To track keyword trends on Reddit, collect matching posts and comments on a fixed schedule, preserve timestamps and subreddit names, group records into consistent time buckets, and compare mention volume and engagement over time. Upvote.net's Reddit Scraper supplies URL or search collection plus JSON or CSV exports; your script, warehouse, or dashboard handles the recurring analysis.

The important word is repeatable. A single scrape shows what Reddit returned once.

A series of snapshots can show whether a topic is growing, fading, moving between communities, or simply appearing more often because your query changed.

Key takeaways

  • Define exact keywords, variants, subreddits, time windows, and matching rules before collecting.
  • Use URL mode for known communities and search mode for topic discovery.
  • Save the raw export with collection time, query manifest, and keyword-set version.
  • Compare mentions, unique records, active subreddits, and engagement without treating any one metric as public opinion.
  • Schedule repeated API calls outside the scraper, then review policy and deletion requirements before storing or modeling the data.
A repeatable Reddit trend workflow showing collect, timestamp, aggregate, and review

A Reddit keyword trend is a change in the number, location, or context of matching Reddit records across comparable time periods. It is a measurement of collected conversations, not a direct measurement of every person's interest or belief.

Reddit keyword tracking helps you see how a topic appears in real conversations, which communities discuss it, and how the tone or engagement changes over time. It can support content planning, product research, brand monitoring, research projects, and early signal detection when you keep the sample and interpretation disciplined.

Reddit's own business guidance on tracking trends describes monitoring terms across communities and conversations. A scraper-based workflow adds raw records, your own fields, and a repeatable export that you can analyze outside a dashboard.

The distinction matters because Reddit mention volume is not the same as search volume. A keyword can appear more often because a news story triggered a short burst, one community became unusually active, or your search scope expanded.

Question

Useful Reddit signal

Limitation to record

Is a topic appearing more often?

Matching posts and comments per time bucket

Search and collection boundaries can create the change

Which communities discuss it?

Unique subreddits and share by subreddit

Reddit communities are not a representative population

Is the conversation becoming more active?

Scores, replies, and engagement by record

Votes and comments measure activity, not truth

Did the language change?

Repeated terms, labels, or human-reviewed samples

Automated sentiment can miss sarcasm and context

For SEO teams, trend data can help you find questions before they become a content brief. The Reddit for SEO guide explains the broader search-visibility context, while this article focuses on collecting and comparing the underlying records.

Choose keywords and comparison scope before collecting

A useful trend series starts with a written collection definition. Choose the exact term, close variants, communities, date range, cadence, fields, and matching rule before you run the first scrape.

If those inputs change between runs, you cannot tell whether the conversation changed or the measurement changed.

Start with a keyword set rather than one phrase. Keep the canonical term separate from brand names, misspellings, product versions, abbreviations, and community slang so you can compare the broad topic with its components.

Keyword group

Example

Why keep it separate?

Exact phrase

upvote.net

Measures the phrase you asked for

Brand and product

Upvote.net, Reddit Scraper

Shows brand-specific conversation

Variant or misspelling

upvote net, upvote scraper

Captures how users actually type it

Community language

reddit scraper, keyword trends

Finds terms that may not appear in the brief

Plot each group as its own line. This fictional six-week example uses upvote.net as the exact phrase and keeps related variants and community language on separate lines.

Illustrative line chart using upvote.net as the exact phrase and comparing four keyword groups

*Illustrative example only: each line is a separate keyword group; replace the sample counts with your own collected snapshots.*

Decide whether the project needs platform-wide discovery or a known-community comparison.

Use search mode when the topic is known but the relevant threads are not. Use URL mode when you have a fixed subreddit, feed, post, or comment target that should remain stable across runs.

Write down the date rule too.

created_at tells you when the Reddit record was published; collected_at tells you when your scraper saw it. Both matter.

A post created last month and collected today belongs to a different analysis bucket than a post created today.

Keep the scope narrow enough to explain. Ten carefully chosen subreddits with stable rules usually produce a more useful series than an undefined search across everything.

Add communities only when the research question requires them, and version the list when it changes.

Collect Reddit trend snapshots with Upvote.net

Upvote.net's Reddit Scraper can queue jobs from Reddit URLs or search URLs and return subreddit, post, comment, and user data as JSON or CSV. The API also exposes run history, status, reserved and charged credits, and a download endpoint, which gives you the pieces needed for repeatable snapshots.

Upvote.net Reddit Scraper Advanced view showing URL and search modes, entity fields, fan-out limits, and JSON or CSV output
Upvote.net Reddit Scraper Simple view showing a Reddit URL target, result limit, Scraper Credit estimate, and JSON or CSV output

*In-app proof: Advanced mode lets you choose collection mode, entity groups, fields, and fan-out limits. Simple mode keeps a URL snapshot focused on a result limit, credit estimate, and output format.*

As of July 2026, the Reddit Scraper API documentation lists these collection controls:

  • Up to 50 URLs per request.
  • A default limit of 20 items per target, with listings and comments supporting up to 1,000 when Advanced entity mode is not being used.
  • Concurrency from 1 to 20, with a default of 3.
  • JSON or CSV result files.
  • Post, comment, community, and user entity groups in Advanced mode.
  • One Scraper Credit per successful result; failed or errored results cost nothing.

Use a small pilot first.

Your first run should prove that the search URL, fields, matching rule, and output schema produce records you can analyze.

The API reserves credit while a run is queued, then reports charged_credits after completion and refunds unused reserved credit.

A repeatable collection loop looks like this:

  1. Save the manifest. Record the keyword set, Reddit URLs or search URLs, selected fields, limit, sort, time rule, format, and UTC collection time.
  2. Submit the snapshot. Send a POST request to /v1/scraper with your API key.
  3. Poll the run. Check /v1/scraper/{runId} until the status is completed or partial.
  4. Download the result. Call /v1/scraper/{runId}/download and move the file into controlled storage.
  5. Repeat outside the scraper. Use cron, GitHub Actions, a workflow runner, or your own worker to call the API on a fixed cadence.

The API docs describe queued jobs and history rather than a recurring schedule control, so treat scheduling as your orchestration layer. The Reddit Scraper knowledge-base guide gives a shorter product walkthrough before you automate the run.

curl https://api.upvote.net/v1/scraper \
  --request POST \
  --header 'Content-Type: application/json' \
  --header 'X-API-Key: YOUR_SECRET_TOKEN' \
  --data '{
    "urls": ["https://www.reddit.com/search/?q=upvote.net"],
    "limit": 100,
    "sort": "new",
    "format": "json"
  }'

Download each completed result into storage you control. Keep the raw file immutable and create a cleaned copy for matching and aggregation.

Turn scraper snapshots into time-series metrics

A trend report needs one row per returned record plus the metadata that explains how the row entered the dataset. Keep run_id, collected_at, target, record_id, data_type, created_at, subreddit, text fields, engagement fields, matched terms, and keyword_set_version where each field is necessary for the project.

Use the Reddit record's creation time for the trend bucket and the scraper run time for freshness checks.

Convert both to UTC before grouping. If you group by download time, a delayed run can make an old conversation look new.

Deduplicate by stable Reddit record ID.

A post can appear in more than one search result or in overlapping time windows. Count it once per metric unless you are intentionally measuring query coverage.

Metric

Simple calculation

What it can tell you

Mentions

Matching records per day or week

Whether the observed conversation is growing or shrinking

Unique communities

Distinct subreddit count per bucket

Where the topic is spreading or contracting

Share by subreddit

Community mentions divided by total mentions

Which communities drive the observed volume

Engagement

Score, replies, or selected engagement fields per record

Whether matching conversations attract interaction

Variant mix

Counts by exact term, brand, or slang group

Which language people use for the topic

Store the query manifest next to the metric table. A chart without its scope, keyword definition, and exclusions cannot explain what changed.

The first useful chart is usually a line chart of mentions by week with one line per keyword group.

Add a second view for subreddit share. Do not smooth away a spike before you inspect the raw records that created it.

Interpret spikes without overclaiming

A spike in Reddit mentions means your collection found more matching records in that period.

It does not prove that the whole market became more interested, that sentiment moved in one direction, or that the topic will continue rising. Review the records and collection boundary before you name a cause.

Check these explanations in order:

  1. Collection change. Did you add a subreddit, variant, sort rule, or search target?
  2. Duplicate coverage. Did overlapping URLs cause the same records to enter more than once?
  3. Community event. Did one subreddit host a launch, controversy, announcement, or recurring thread?
  4. External event. Did news or a product release create a short-lived burst?
  5. Language shift. Did people stop using the exact term while keeping the same idea?

Use a human-reviewed sample before labeling a spike as positive, negative, or urgent. Sentiment models can support triage, but sarcasm, quoted text, deleted context, and community slang can change the meaning of a sentence.

The Situated Ethics Framework for Reddit recommends treating public availability, user expectations, context, and potential harm as separate questions. That applies to trend dashboards as much as it applies to academic datasets.

If the baseline is not zero, you can calculate a simple relative change:

relative change = (current bucket - baseline bucket) / baseline bucket

Keep the raw counts beside the percentage. A change from 1 mention to 3 mentions is mathematically large but may not be decision-worthy.

Build reproducible reports and alerts

A useful Reddit trend report shows the query definition, collection window, mention counts, top communities, representative examples, and the reason a change deserves attention. It also keeps the raw exports and transformation code close enough that another analyst can reproduce the result.

Use a small reporting folder or warehouse layout:

  • manifests/ for keyword sets, URLs, fields, and cadence.
  • raw/ for immutable JSON or CSV downloads.
  • clean/ for deduplicated records and normalized timestamps.
  • metrics/ for bucket-level counts and shares.
  • reports/ for charts, notes, and reviewed examples.
A repeatable Reddit trend workflow showing collect, timestamp, aggregate, and review

Set alerts against a baseline, not a random threshold.

An alert might fire when the current bucket exceeds the rolling median by a defined amount and the increase appears across more than one community. Record the rule version so you can explain why an alert fired later.

For content teams, route a trend into a brief only after someone reviews the source threads.

For product teams, separate feature requests from complaints and one-off announcements. For researchers, record sampling limits and avoid presenting Reddit as a population survey.

Review privacy, policy, and dataset limits

Public Reddit content still carries privacy, policy, copyright, and deletion obligations. Collect the minimum fields needed for the trend question, avoid author profiling, separate public topic measurement from identity analysis, and keep a removal process for records that should no longer remain in your dataset.

Reddit's Public Content Policy distinguishes public posts and comments from private messages, private communities, deleted content, and other non-public account data. Public visibility does not make every downstream use unrestricted.

The Data API Terms also prohibit using User Content to train a machine-learning or AI model without express permission from the applicable rights holders. Commercial or otherwise non-permitted use may require a separate written agreement.

If your project is academic or involves sensitive topics, review the Reddit for Researchers program and your institution's requirements before collecting at scale. A trend line can hide vulnerable people, deleted context, moderation bias, or communities that never appear in your sample.

The collection layer should stay separate from the interpretation layer.

Upvote.net returns selected Reddit records and run files. Your system owns matching rules, time-series aggregation, human review, alerts, and governance.

Start with one keyword set, one stable community scope, and a small pilot.

Compare the first snapshots manually. Scale only after you can explain what each metric measures and what it leaves out.

Open the Reddit Scraper API docs or review the scraper workflow before you set up your first recurring run.

Sam Wilson
About Sam Wilson

Hey, I'm Sam. I've spent the last 8 years figuring out what actually works on Reddit (and what gets you instantly banned). After growing several brands through organic Reddit presence, I started Upvote to help others do the same - without the trial and error. When I'm not diving into subreddit analytics, you'll find me reading about consumer psychology or debating the best coffee brewing methods.

Want to amplify your Reddit results?

Explore Our Reddit Upvote Services