Reddit Promoted Posts Scraper avatar

Reddit Promoted Posts Scraper

Under maintenance

Pricing

from $4.99 / 1,000 results

Go to Apify Store
Reddit Promoted Posts Scraper

Reddit Promoted Posts Scraper

Under maintenance

Collects promoted (sponsored) posts from Reddit feeds — advertiser, title, ad text, destination, CTA, media, and campaign metadata.

Pricing

from $4.99 / 1,000 results

Rating

0.0

(0)

Developer

Coding Frontned

Coding Frontned

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

0

Monthly active users

4 days ago

Last modified

Share

Collect real promoted posts rendered in bounded public Reddit feeds. The Actor visits r/popular, the home feed, and optional subreddits sequentially, deduplicates by Reddit post ID, and can apply an optional keyword filter. It uses an ordinary Chromium browser without browser-fingerprint or automation-signal manipulation.

Reddit does not guarantee that a particular public session, feed, country, or moment will receive ads. maxItems is therefore an upper bound, not an exact-count promise.

Input

  • subreddits: up to 20 optional subreddit names; r/ prefixes and case-insensitive duplicates are normalized.
  • query: optional case-insensitive advertiser/title/text/domain filter.
  • maxItems: maximum successful rows, from 1 to 100; defaults to 20.
  • maxScrolls: per-feed scroll bound, from 1 to 20; defaults to 8.
  • proxyConfiguration: optional Apify Proxy settings. Invalid configuration fails closed instead of silently switching to direct traffic.
{
"subreddits": ["technology", "marketing"],
"maxItems": 5,
"maxScrolls": 5
}

Unknown fields and invalid types are rejected rather than coerced.

Output

The default dataset contains successful promoted-post rows only. Each row requires a published advertiser, title, Reddit post ID and permalink, plus source and transport provenance. Optional fields—body text, destination, CTA, media, subreddit, campaign ID, and country code—are emitted only when Reddit publishes them in the rendered DOM.

The OUTPUT key in the default key-value store distinguishes SUCCESS, PARTIAL, NO_MATCHES, NO_RESULTS, and FAILED; it includes observed/saved counts, per-feed summaries, bounded failures, and browser/proxy provenance. Zero-result or blocked runs never insert placeholder rows into the dataset. A run fails only when every bounded feed fails; an accessible feed with no delivered ads completes as NO_RESULTS.

Development

npm ci
npm test
npm run lint
npx apify-cli validate-schema
node validate-datasets.js <dataset.json-or-directory-or-stdin-dash>

Collect only public data you are authorized to use. Follow Reddit's terms and applicable privacy, advertising, and data-protection law.