Scrape the native ads Outbrain runs right now in the Promoted stories boxes of 665 verified news sites in 43 countries, or any page URL. One row per distinct ad: headline, image, brand, advertiser, ad and campaign ids, landing address, IAB categories, EU payer. Watch mode bills only new ads.
Texts only: the README and the page URL setting said that a site Outbrain does not serve gets a free coverage row. Outbrain now answers page URLs of many sites without its box (example.com and GitHub pages included) with ads of its own network; those rows are real ads and are billed like any ad, so ads returned for a page URL do not prove that the site runs Outbrain. A page Outbrain does not recognise at all can still close early with a free unknown_site row, and the generic filler row is still never charged. The site field and the Ad event text now say the site an ad was read for, not the site it ran on. No change to how runs work.
0.1 (2026-10-19)
New setting includePersonalData (Include personal data), off by default. Off, nothing changes: an e-mail address in advertiserName, brandName, dsaPayer or dsaBeneficiary is still replaced by "(e-mail address hidden)". On, those four fields are delivered exactly as Outbrain serves them. No row field, price or event changes; saved inputs without the setting run as before.
0.1 (2026-10-09)
First build: Outbrain native ads by country, site or page URL; one row and one charge per distinct ad per run; watch mode with a named memory; free coverage rows per site and country.