MGID Ads Scraper - Native Ads by Country, Payer avatar

MGID Ads Scraper - Native Ads by Country, Payer

Pricing

from $0.85 / 1,000 ads

Go to Apify Store
MGID Ads Scraper - Native Ads by Country, Payer

MGID Ads Scraper - Native Ads by Country, Payer

Scrape the native ads MGID runs right now in the sponsored boxes of 914 verified publisher sites, read from 48 countries, or any page URL. One row per distinct ad: headline, image, brand, ad id, call to action, category, and the EU payer and beneficiary MGID discloses. Watch mode bills only new ads.

Pricing

from $0.85 / 1,000 ads

Rating

0.0

(0)

Developer

Automation Craft

Automation Craft

Maintained by Community

Actor stats

0

Bookmarked

3

Total users

2

Monthly active users

6 days ago

Last modified

Share

MGID Ads Scraper - Native Ads by Country, Payer

MGID ads scraper for the native ads running right now in MGID's sponsored content boxes on news and publisher sites. Pick countries, pick sites, or paste any article URL, and get one row per distinct ad: headline, image, brand, MGID's ad id, call to action, category number, and for readers in the EU and the UK the payer, on whose behalf the ad runs and the payer's country, as MGID discloses them. No login, no API key, no browser. Each distinct ad is charged once per run, and a watch mode charges only ads your earlier runs have not seen.

This is a live sampler of the sponsored content MGID serves today, per country and per site, built for affiliate marketers, media buyers and agencies who study competitor native ads, and for compliance teams who want the payer behind a native ad. It is not an ad library: MGID publishes no archive, so there is no advertiser search and no history before your own runs (see "What this Actor does NOT do").

Quick start

  1. Open the Actor and keep the prefilled input (United States, 3 verified sites, 20 ads), or pick your countries.
  2. Optionally pick named sites from the built in list, or paste article URLs of any site that shows an MGID box.
  3. Click Start. A run of the prefilled input takes about 10 to 30 seconds.
  4. Read the Ads view: its first column, type, tells the rows apart (ad for an ad of an advertiser, charged; house_ad for MGID's own content, free; the run's coverage and summary rows follow with empty cells, since a dataset view cannot filter by row type). The Coverage view has one row per site and country: calls, answers with and without ads, distinct ads.
  5. To track new native ads every day, give the run a memory name and schedule it: each later run delivers and charges only ads the memory has not seen.

What you get

Each ad row carries the fields below. Fill rates are measured on 519 distinct ads delivered by this Actor's own test runs on 2026-10-11 (24 runs on the final build; United States, Germany, Brazil, France, United Kingdom, Italy and Armenia exits; 130 of them read from EU and UK exits).

FieldWhat it isFilled
headlineHeadline: the ad headline as the box shows it, HTML entities decoded100 percent
brandNameBrand: the brand name shown with the ad100 percent
adIdAd id: MGID's id of the ad, the same on every site and call100 percent
imageUrlImage: the ad image as MGID serves it100 percent
callToActionCall to action: the button text, in the reader's language (Learn more, Mehr erfahren)100 percent
categoryIdCategory number: MGID's category of the ad (MGID publishes no name table for it)100 percent
mediaTypeMedia type: static for a still image, anim for an animated one100 percent (anim on 2.5 percent)
payerName, onBehalfOf, payerCountryWho pays for the ad, on whose behalf it runs and the advertiser's country, as MGID discloses them to readers in the EU and the UK (read through MGID's own payer information, one small call per new ad)80 percent of ads read from EU and UK exits (104 of 130); none elsewhere
descriptionDescription: a second line of text, when the ad has one1.3 percent
aiGeneratedAI generated: true when MGID marks the ad as made with AItrue on 0.8 percent
landingUrl, landingDomainLanding address, only when MGID states one in its answer (rare; MGID's answer carries the click counter, never followed and never delivered)0 of 519 in these runs (5 of 853 in the build's spike)

Also on every ad row: payerShown (shown, not_shown when the box shows no payer, which is the case for most readers outside the EU and the UK, or lookup_failed), personalDataMasked, the site, its own siteCountry, the widgetId, pageUrl and exitCountry it was seen on, its position in the box, seenAt, creativeId and adKey.

The run also writes free rows:

  • house_ad, MGID's own content in the box (brands such as Brainberries, Herbeauty and Buzz Day, all paid for by MGID's own company as MGID's payer data says): the same fields as an ad row plus houseReason (house_payer when the payer data says so, house_brand for a brand known as MGID's own). Delivered once per run, never charged, never counted against maxAds; turn them off with includeHouseAds: false.
  • coverage, one per site and country read: calls, answers with ads, answers without ads (MGID serves only its own content to callers it does not trust, so such an answer is retried on a fresh exit and never read as "this site shows no ads"), distinct ads, ads delivered, ads already seen on another site in the run, ads your memory already knew, MGID house rows seen, payer lookups, their keys, where the widget id came from, and why the site stopped (dry, site_call_cap, blocked, failed, unknown_widget, bad_widget, no_mgid_box, stopped).
  • status, for a value that could not be used (a page URL that is not a URL or is not accepted), a country with no verified site, or the pairs a stopped run did not reach.
  • summary, the last row: calls, page reads, payer lookups, ads seen and delivered, ads charged, house rows, the stop reason, proxy bytes and the work allowance.

Built in sites

914 publisher sites in 46 countries are built in. They come from MGID's own list of its publishers (its sellers.json file): each site's home page was read once for its MGID box (the widget on the page, or the widget list of MGID's site loader the page names), and each site was then verified live on 2026-10-11: three calls on three fresh residential exits in the site's country, at least two of them answering with ads of advertisers. The country of a site is read from its domain ending, else from the page language, and a hand review moved 126 sites to their own country (English pages without a regional mark are listed under the United States). Pick them by country (the sites with the most ads per call first) or by name. The list is refreshed by a script (the site map), so sites that drop MGID leave it. Australia and Canada have no MGID site of their own in the map; they are offered because MGID answered ads of advertisers to readers there on other countries' sites (measured 2026-10-11), and they are read on the best other verified sites.

CountrySitesSites, the most ads per call first (all of them are in the Sites field of the input)
United States (US)177fingerlickingrecipes.com, gazettely.com, policefilestonite.net, freepatternsblog.com, abdullah-al-sahil.com, aic5.com, bullscore.com, dailyusanews.online, daytondailymagazine.com, detroitcitynews.com, emedihealth.com, epochedge.com, gamingnews4u.com, happiness-life.org, healthtips8386.blogspot.com, htdmedia168.blogspot.com, idropnews.com, instanthub.net, isolastories.com, mydailystars.com, patriotclash.com, patriotsgazette.com, rawlifestories.site, realtwistedstories.com, salondiscover.com and 152 more
United Kingdom (GB)6footballtoday.com, en31.usnews.uk, lolitopia.com, operatorsd.com, rungbeg.com, thecityisours.co.uk
Germany (DE)17ddr-rezepte.net, donnerwetter.de, lilienblog.de, uelzener-nachrichten.com, quermania.de, marktcom.de, finanznachrichten.de, muligartenbaugmbh.de, reitschuster.de, juraforum.de, wallstreet-online.de, boersennews.de, ideecon.com, sharedeals.de, pravda-tv.com, besserleben.blog, globalimagine.com
France (FR)9astucesjardin.com, thebuzzly.com, amigo-royan.fr, adoboloco.fr, brasseriemoliteuil.fr, meilleurpronostic.fr, emet.press, gnatepe.com, scolinfo.net
Italy (IT)33aforismi.meglio.it, calabriadasogno.it, jedanews.com, pescarasport24.it, sicurauto.it, tg24-ore.com, worldnotix.net, epgitalia.tv, ilblogdigio.it, ligurianotizie.it, ideadesigncasa.org, spazionapoli.it, cultweb.it, professionedocente.com, sfornopizza.it, nuovasocieta.it, fineartphotographyvideoart.com, ketosisa.it, zmedia.it, stiledonna.net, billoccino.com, gds.it, lasmorfianapoletana.com, phonetoday.it, ristorantevangoghmatera.it and 8 more
Spain (ES)15skynovels.net, aquienlasierra.es, somosfan.com, notienred.info, noticiasprofeticas.com, codigooculto.com, 180grados.digital, noticiaalminuto.com, aqueenofmagic.com, chicanoticias.com, depeso.com, elfiltrador.com, laisladelastentaciones.com, ncrnoticias.com, todosobreremedios.com
Netherlands (NL)1dissident.one
India (IN)42indianews.in, braveindianews.com, janamtv.com, vikatan.com, mediaoneonline.com, wikiwiki.in, aajkaal.in, janmabhumi.in, ibtimes.co.in, talkindiadigital.com, ukhrultimes.com, lokshahi.news, taasir.com, thefederal.com, bigbreakingwire.in, dainiksaveratimes.com, rajyasameeksha.com, uttranews.com, mycgnews.in, bartamanpatrika.com, saamana.com, hindi.webdunia.com, page16.in, aninews.in, theinsiderjournal.in and 17 more
Australia (AU)0no site of its own: read on other countries' verified sites from its own exit (topUpWithOtherSites)
Canada (CA)0no site of its own: read on other countries' verified sites from its own exit (topUpWithOtherSites)
Albania (AL)4sot.com.al, sarandanews.net, agroweb.org, tetovasot.com
Algeria (DZ)1lematindalgerie.com
Argentina (AR)9canal26.com, chacodiapordia.com, entreriosya.com.ar, historiahoy.com.ar, perfil.com, elobservadornews.com.ar, elpatagonico.com, infobrisas.com, paparazzi.com.ar
Armenia (AM)1news.am
Azerbaijan (AZ)1sonxeber.az
Bosnia and Herzegovina (BA)2bih-zmajevi.com, kakanj-x.com
Brazil (BR)170bemparana.com.br, agoranovale.com.br, diariodorio.com, artesanatopassoapassoja.com.br, bocanews.com.br, clickpetroleoegas.com.br, gmaisnoticias.com, informenoticias.net, jasb.com.br, livrodosonho.com, mizaeltutodroid.com, mrnews.com.br, portaledicase.com, portalumuaramanews.com.br, receitatodahora.com.br, revistaartesanato.com.br, sociedademilitar.com.br, termometrodapolitica.com.br, teuquiz.com, carroesporteclube.com.br, adonisdutra.com.br, bahiainforma24horas.com, bhaz.com.br, fanoticias.com.br, financenews.com.br and 145 more
Bulgaria (BG)3receptite.com, kalvacha.com, kliuki.bg
Chile (CL)3diarioelcentro.cl, latribuna.cl, eldesconcierto.cl
Colombia (CO)14laopinion.co, hoydiariodelmagdalena.com.co, vibra.co, lanacion.com.co, elpilon.com.co, noticiasuno.com, winsports.co, elquindiano.com, telemedellin.tv, pulzo.com, teleamiga.tv, elespectador.com, eluniversal.com.co, quindionoticias.com
Costa Rica (CR)1lateja.cr
Croatia (HR)1epodravina.hr
Cyprus (CY)1omegalive.com.cy
Czech Republic (CZ)5morezprav.cz, psiusmev.cz, cestazaremeslem.cz, stars24.cz, novinykraje.cz
Denmark (DK)3tipsbladet.dk, campo.dk, mandesiden.dk
Estonia (EE)1avasta.me
Ghana (GH)1ghanablogs.com
Greece (GR)28araxthos.gr, financenews.gr, england365.gr, metrosport.gr, pao365.gr, dokari.gr, evianews.com, eviathema.gr, grand-prix.gr, fanpage.gr, flight.com.gr, paidis.com, dailypost.gr, apopsilive.gr, europost.gr, i-diakopes.gr, sofokleousin.gr, exposgreece.gr, monobala.gr, live-sports365.com, parapolitika.gr, tvxs.gr, enimerotiko.gr, menshouse.gr, triklopodia.gr and 3 more
Guatemala (GT)2deguate.com, prensalibre.com
Honduras (HN)1televicentro.com
Hungary (HU)5magyarhaza.com, tudasfaja.com, mosolyogjvelunk.com, kulfoldiapro.com, balramagyar.hu
Indonesia (ID)120jpnn.com, ayojakarta.com, burungnews.com, gosipgarut.id, harga.web.id, jawapos.com, beritajatim.com, inews.id, manadopost.jawapos.com, airspace-review.com, arif.rahmawan.web.id, batarapos.com, beritainspiratif.com, beritasampit.com, beritasatu.com, explorethebali.com, goriau.com, guesehat.com, harga-diskon.com, hariankepri.com, indomiliter.com, indosport.com, industry.co.id, inisumedang.com, intrik.id and 95 more
Kenya (KE)5afrinewske.com, businesstoday.co.ke, kenyanlife.com, kenyanlife.info, malindikenya.net
Malaysia (MY)8sinarharian.com.my, thesun.my, defencesecurityasia.com, flashsukan.com.my, kosmo.com.my, sabahpost.net, thecoverage.my, portalsemakan.com
Mexico (MX)23xeu.mx, tusbuenasnoticias.com, vecinosinformados.com, am.com.mx, criteriohidalgo.com, capitalmexico.com.mx, culturacolectiva.com, diario.mx, elimparcial.com, laopcion.com.mx, amexi.com.mx, marthadebayle.com, record.com.mx, merca20.com, unavida.website, imparcialoaxaca.mx, reflectores.mx, abcnoticias.mx, tribunadelabahia.com.mx, gluc.mx, dariocelis.mx, semanario7dias.com.mx, quien.com
Nigeria (NG)9naijanews.com, abntv.com.ng, emmanuelsblog.com.ng, fusionchronicles.ng, blueprint.ng, gistlover.com, nairametrics.com, thenewsguru.ng, gwg.ng
North Macedonia (MK)6ubavinaizdravje.mk, opserver.mk, kurir.mk, mastilo.mk, ekipa.mk, nmd.mk
Peru (PE)8walac.pe, larotativa.pe, elpopular.pe, notitas.site, moda.com.pe, tvolima.pe, larepublica.pe, pachamamaradio.org
Philippines (PH)2governmentph.com, rmn.ph
Poland (PL)29jebzmeme.pl, infor.pl, udostepnijto.pl, dsi.net.pl, burbonik.pl, doba.pl, film.org.pl, tkn24.pl, tuwroclaw.com, infoilawa.pl, learningfromhollywood.pl, tysol.pl, chords.pl, crowdmedia.pl, efakty24.pl, eszamotuly.pl, miejskireporter.pl, pogonsportnet.pl, silesia24.pl, superprzepis.pl, tuolawa.pl, wlocie.pl, zdroweporadniki.pl, zlubaczowa.pl, zwierzaki.pl and 4 more
Portugal (PT)14postal.pt, imprensa.com.pt, noticiasdecoimbra.pt, bolanarede.pt, diarioluso.com, revistacarros.pt, buzzvip.pt, rumores.pt, leonino.pt, flash.pt, blogvisaodemercado.pt, portalfresta.com, sulinformacao.pt, bix.pt
Romania (RO)6dej24.ro, adevarul.ro, ziarulincomod.ro, mytex.ro, 101books.club, rotalianul.com
Serbia (RS)4sanovnik.org, glas-javnosti.rs, trebinjelive.info, hellomagazin.rs
South Africa (ZA)1news365.co.za
Thailand (TH)11brighttv.co.th, tvpoolonline.com, dog-vs-cat.com, esanborleumtin.com, js100.com, pattayamail.com, thaistar24h.net, thainewspost.com, innnews.co.th, banmuang.co.th, mthai24h.com
Turkey (TR)9gazetepencere.com, haberlisin.com, ozgurhalkinsesi.com.tr, veryansintv.com, kamuajans.com, olaymedya.com, haberdarim.com, basvuruformu.org, memurlar.net
Ukraine (UA)69bbc-ccnn.com, gromada.group, volyn.com.ua, shostka.info, ua.news, dozi-rok.com, itechua.com, bukinfo.com.ua, novosti-n.org, pik.net.ua, racurs.ua, rivne.media, trueua.info, firtka.if.ua, golapravda.blog, fraza.com, izvestia.kiev.ua, cikavosti.com, goloskarpat.info, insider.ua, sq.com.ua, borgexpert.com, myzukrainy.net, politerno.com.ua, rivnepost.rv.ua and 44 more
Vietnam (VN)33movieshd4k.com, hot.newsonline.biz, baoangiang.com.vn, baodongnai.com.vn, vietnamfinance.vn, thethao247.vn, phapluat.suckhoedoisong.vn, thoitiet.vn, ixinh.com.vn, kienthuc.net.vn, vietnamplus.vn, ghienbongda.vn, suckhoedoisong.vn, ifeg.info, onsports.vn, vietstock.vn, vov.vn, baomoi.vip, tinnhanh247.online, toploigiai.vn, nguoi-noi-tieng.com, diembao.org, anninhthudo.vn, doctor247.vn, giaoducthoidai.vn and 8 more

Any other site that shows an MGID box can be read with Page URLs: paste one article URL per site. The Actor reads that page once to find the site's MGID widget id (from the widget on the page, or from MGID's site loader the page names), then calls the box like a built in site. A page without an MGID box gets a free no_mgid_box coverage row; a widget MGID no longer knows gets a free unknown_widget row.

How a run reads the boxes

  • Every call goes out through a fresh Apify residential exit in the country asked for. MGID serves the ads of the reader's country, not of the site (three American sites read from German exits and from US exits showed no ad in common), so a built in site is read from its own country, page URLs from every country you pick, and a thin country is topped up with other verified sites read from its own exit (topUpWithOtherSites; the rows name the site's own country in siteCountry).
  • MGID writes the reader's time zone offset and whether it applied the GDPR to the reader into its answer. An answer whose offset or GDPR flag does not fit the exit country (a proxy exit placed in another country) is not delivered and counts as a failed call. An exit placed in another country with the same offset and the same GDPR status (Germany and France, for example) cannot be told apart this way.
  • MGID rotates the ads it shows: each call to a site can bring new ones, up to the size of the site's box (1 to 32 ads). A site is called again until it stops bringing ads new to the run (stopAfterDryCalls), up to maxCallsPerSite.
  • Unpaid calls are capped too: answers without new ads (a watch run whose memory already knows most ads, blocked or empty answers, page reads of sites that are not built in) draw on a small budget per run that grows with every ad charged. When it runs out the run stops with stoppedBy: work_allowance in the summary; the sites it had not finished get a coverage row with status stopped and the same stoppedBy, and sites never reached are listed in one not_started status row. Start the next run (or schedule it) to go on; ads already delivered are not charged again under a memory name.
  • The Actor reads the same data call the publisher's page makes and MGID's own payer information for an ad, and stops there. It never clicks an ad, never follows a click link and never loads tracking pixels: a followed link would be a paid click on an advertiser's campaign.

How much does it cost to scrape MGID ads?

Pay per event: a small start fee per run and a price per ad delivered; never a charge for calls, page reads, payer lookups, MGID's own content, blocked answers, coverage rows or status rows.

EventFree planBronzeSilverGold
Ad (per 1,000 distinct ads)USD 1.45USD 1.25USD 1.05USD 0.85
Actor start (once per run)USD 0.008USD 0.008USD 0.008USD 0.008

Platinum and Diamond plans pay the Gold price. The Actor start event is the same on every plan.

The Store pricing card shows these same prices per 1,000 events: "$1.45 / 1,000" on the Ad row means one ad costs 0.145 cents.

Worked example on the Free plan: the prefilled run (20 ads) costs USD 0.008 + 20 x USD 0.00145 = USD 0.037. A run of 500 ads costs USD 0.008 + USD 0.725 = USD 0.733.

  • An ad is charged once per run, however many sites, calls or countries show it. MGID writes the reader's city into many headlines ("Wichita Men: ..."); the same ad with another city in its headline is the same ad (the row keeps the first headline seen).
  • With a memory name, an ad is charged once for that name: later runs deliver only new ads.
  • MGID's own content (house rows), answers without ads, page reads, payer lookups, unknown widgets, failed calls, coverage rows, status rows and the summary are free.
  • Set a maximum cost per run in the run options: the Actor stops before an ad it cannot charge, and never makes a call when the limit cannot pay for one more ad.

Input

FieldWhat it doesDefault
countriesCountries to sample; verified sites of each are read from a residential exit in that countryUnited States, when no site and no page URL is given
sitesPerCountryHow many verified sites of each chosen country to read, the most ads per call first (0 reads none by country)5
topUpWithOtherSitesTop up a country with fewer verified sites of its own than sitesPerCountry with other verified sites, read from that country's exittrue
sitesNamed sites from the built in list, each read from its own countrynone
pageUrlsAny article or page URL of any site, read from every chosen country (the United States when no country is chosen)none
maxAdsThe most ads delivered in one run (house rows are not counted)100
maxCallsPerSiteThe most calls to one site in one run10
stopAfterDryCallsA site stops after this many answers in a row with no ad new to the run3
maxCallsThe most requests in one run (page reads of sites that are not built in included; payer lookups are not counted)200
includeHouseAdsDeliver MGID's own content as free house_ad rowstrue
memoryNameWatch mode: one name for scheduled runs, each ad charged once for that namenone
resetMemoryForget what the named memory knows before this runfalse
includePersonalDataPersonal data: on, brandName, payerName and onBehalfOf are delivered exactly as MGID serves them, e-mail addresses included; off, an e-mail address in them is hiddenfalse

Example: every new native ad in Germany and France with its payer, daily.

{
"countries": ["DE", "FR"],
"sitesPerCountry": 10,
"maxAds": 1000,
"memoryName": "de-fr-daily"
}

The sites field takes only names from the built in list: a site that is not in it (also one written with other capitals) is refused by Apify before the run starts, with an error that lists the allowed values; read any other site with pageUrls. A value that cannot be used is never guessed: a page URL that is not a URL, an address on an ad network's own host, or a URL that carries an ad click id, an e-mail address or a password gets a free status row and the rest of the run goes on; an unknown country or a malformed number is refused before any call is made, and Apify itself refuses a true or false setting written as text before the run starts.

What this Actor does NOT do

  • It is not an ad library. MGID publishes no ad archive, so there is no search by advertiser or keyword, no history before your own runs and no "all ads of brand X". Filter the rows by brandName or payerName for a competitor's ads, and use a memory name to build your own history.
  • No landing pages: MGID's answer carries a click counter, not the advertiser's address (a landing address is stated on under 1 percent of ads, and delivered then). The Actor never follows a click link or resolves a redirect (a followed link is a paid click).
  • No advertiser id, campaign id, spend, impressions, clicks or first and last shown dates: MGID's answer carries none of them. No active status or date filters either: every row is an ad being served at the moment it was seen.
  • No lookup by advertiser domain or brand and no media download or rehosting: the image addresses are MGID's own, and filtering by brandName or payerName is done on the rows.
  • The payer is shown only where MGID discloses it, for readers in the EU and partly in the UK; ads read from other countries have no payer. Payer names can be a company or a person's name and are delivered as MGID publishes them.
  • MGID's own content is recognised by its payer (where MGID shows one) and by the brands that payer is known to pay for; a new brand of MGID's own, seen only where no payer is shown, would be delivered as an ad.
  • It does not cover every MGID site: the built in list holds the sites verified live, and page URLs reach any other one. A box that shows no ads of advertisers three times in a row on fresh exits is reported as blocked.
  • It does not read Outbrain, Taboola or other native networks (Outbrain and Taboola have their own listings of the same family).
  • It does not sign in or keep cookies: every call is a fresh visitor with no history in the chosen country, so the sample is what a new anonymous reader there is shown.
  • It does not use any publisher API key, and needs no MGID account.

FAQ

Is there a public ad library for MGID?

No. MGID publishes no ad archive. This Actor reads the ads MGID serves right now in the boxes of publisher sites, per country, and keeps what your runs saw in a named memory if you ask it to.

How do I spy on competitors' MGID native ads?

Run the countries where they advertise with enough sites and calls, then filter the rows by brandName or, for EU and UK readers, by payerName and onBehalfOf. Schedule the run with a memory name to collect their new ads every day.

Who pays for an MGID ad?

For readers in the EU (and partly the UK), MGID discloses the payer, on whose behalf the ad runs and the advertiser's country next to each ad. The Actor reads that disclosure for every new ad and puts it into payerName, onBehalfOf and payerCountry.

Which countries and sites are covered?

914 publisher sites in 46 countries are built in, each verified live from a residential exit in the site's country (United States 177, United Kingdom 6, Germany 17, France 9, Italy 33, Spain 15, Netherlands 1, India 42, and more; the full list is in "Built in sites" above). A country with fewer sites of its own than you ask for is topped up with other verified sites read from that country's exit (MGID serves the ads of the country the reader is in, so a Brazilian site read from a German exit shows the ads MGID serves to readers in Germany). Any other site that shows an MGID box can be read with a page URL, from any of the 48 offered countries. Australia and Canada are offered with no site of their own and read on other countries' sites.

Does the Actor click ads or visit landing pages?

No. It reads the same data call the publisher's page makes for its box, and MGID's own payer information for an ad, and stops there: no click link is followed, no landing page is loaded and no tracking pixel is sent. For a page URL of a site that is not built in, it reads that page once, and MGID's site loader file when the page names one, to find the box.

Does the Actor deliver personal data?

A payer or a brand can be a person, and a name can hold an e-mail address. By default an e-mail address in brandName, payerName or onBehalfOf is replaced by "(e-mail address hidden)" and personalDataMasked is true on that row; a person's name without an e-mail address is delivered as MGID publishes it. Turn on includePersonalData to get those three fields exactly as MGID serves them. You are responsible for a lawful use of personal data, GDPR included.

Why does this Actor run with limited permissions?

Least privilege: it reads and writes only its own run storages and, in watch mode, the named memory store it creates itself. It cannot see your other actors, datasets or account data.

API examples

curl -X POST "https://api.apify.com/v2/acts/automation_craft~mgid-ads-scraper/run-sync-get-dataset-items?token=YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{"countries": ["US"], "sitesPerCountry": 3, "maxAds": 50}'
import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: 'YOUR_TOKEN' });
const run = await client.actor('automation_craft/mgid-ads-scraper').call({ countries: ['DE'], sitesPerCountry: 5, maxAds: 200 });
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items.filter((i) => i.type === 'ad').map((i) => [i.brandName, i.payerName, i.headline]));
from apify_client import ApifyClient
client = ApifyClient("YOUR_TOKEN")
run = client.actor("automation_craft/mgid-ads-scraper").call(run_input={"countries": ["FR"], "maxAds": 200, "memoryName": "fr-daily"})
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
if item["type"] == "ad":
print(item["brandName"], item["payerName"], item["headline"])

Changelog

  • 0.1 (2026-10-19): new setting includePersonalData, off by default; on, the brand, payer and beneficiary names are delivered exactly as MGID serves them, e-mail addresses included. Runs without it are unchanged.
  • 0.1 (2026-10-11): first version. MGID native ads by country, built in site or page URL; the EU payer from MGID's own disclosure; MGID's own content as free house rows; one row and one charge per distinct ad per run; watch mode with a named memory; free coverage rows per site and country.

More data tools by Automation Craft