Amazon Sponsored Products Scraper - Ads by Keyword avatar

Amazon Sponsored Products Scraper - Ads by Keyword

Pricing

from $0.59 / 1,000 ad placements

Go to Apify Store
Amazon Sponsored Products Scraper - Ads by Keyword

Amazon Sponsored Products Scraper - Ads by Keyword

Scrape every paid placement on Amazon search results for your keywords: Sponsored Products, sponsored carousels and Sponsored Brands, with ASIN, price, ad position, ad id and organic rank. 21 stores, EU advertiser and payer names. Export JSON, CSV or Excel via API. Pay per ad placement.

Pricing

from $0.59 / 1,000 ad placements

Rating

0.0

(0)

Developer

Automation Craft

Automation Craft

Maintained by Community

Actor stats

0

Bookmarked

3

Total users

2

Monthly active users

3 days ago

Last modified

Share

Amazon Sponsored Products Scraper - Ads by Keyword

Scrape Amazon sponsored products and sponsored ads by keyword: every paid placement Amazon shows on the search result page for the keywords you give, one row each. Sponsored Products cards in the result grid, the products of sponsored carousels, the Sponsored Brands banner above the results, Sponsored Brands videos and collections, and the brands of "Brands related to your search", each with its position on the page, the advertised ASIN, title, price, rating and reviews, Amazon's own ad and campaign ids, and the organic rank of the same product when it also ranks without paying. In the EU stores it can add the advertiser and the payer Amazon names for each ad. 21 Amazon stores, pages 1 to 5, several samples per keyword for share of voice, no login and no cookies.

Every page is read from a residential address in the store's own country, because Amazon serves pages without their ads to datacenter addresses and, on amazon.com, to about a quarter of ordinary visits as well. A page that comes back with its Sponsored Products removed is read again and never billed, so "no ads" in your data means Amazon showed none, not that the scraper was shown a stripped page.

What a search result page holds

On a page 1 with ads Amazon shows 6 or 12 Sponsored Products cards between the organic results, usually two or three sponsored carousels ("Trending now", "Highly rated"), a Sponsored Brands banner, a Sponsored Brands video, three footer brands, and on amazon.com a sponsored "Shop by type" module: a median of 25 paid placements per page in testing (152 result pages, 3,592 placements, 2026-10-08). Amazon rotates its ads between page loads; the four top slots stay much the same, the rest changes.

Quick start

  1. Open the Actor and leave the prefilled input (keywords: ["protein powder"], amazon.com, one page): the run returns page 1's placements in about ten seconds.
  2. Put your own keywords into Keywords or Amazon search URLs, one per line, and choose the Amazon store. A pasted search URL (https://www.amazon.de/s?k=proteinpulver&i=drugstore) keeps its own store and its filters (category, brand, price, sort).
  3. Raise Result pages per keyword (up to 5) for deeper slots, and Samples per keyword (up to 10) to see which products appear most often.
  4. In an EU store, switch on EU advertiser and payer names to learn who is behind each ad.
  5. Read the dataset as JSON, CSV or Excel, or call the Actor through the API (examples below). Schedule it to track a keyword day by day.

What you get

One placement row per paid placement. Fill rates over the 3,592 placement rows (152 result pages) of the test runs of 2026-10-08 in amazon.com, .co.uk, .de, .co.jp, .in, .com.mx and .ae.

FieldWhat it holdsFill
keyword, domain, marketplace, page, sample, searchUrlthe search the row comes from100 percent
amazonSearchedForthe query Amazon says it ran, when it corrected yours (amazon.de ran "qwxzvbn trelock" for "qwxzvbn trelmok")set only when Amazon rewrote it
placementTypesponsored_product, sponsored_products_carousel, shop_by_type, sponsored_brand, sponsored_brand_video, sponsored_brand_collection, sponsored_brand_footer100 percent
adPositionthe placement's order among the paid placements of the page, from the top100 percent
resultSlotfor a Sponsored Products card: its slot among all result cards, organic ones included100 percent of Sponsored Products cards
afterResultSlot, itemPosition, moduleTitlewhere a module sits (after which result), the product's place inside a carousel, the carousel's heading100 percent of carousel and module rows
positionBand, widgetName, slotNametop, middle or bottom, and Amazon's own names of the ad slotband: 100 percent of cards, banners and footer brands
asin, title, productUrl, imagethe advertised product100 percent of Sponsored Products cards, carousel products and videos; Shop by type products carry no image; banners carry their products' ASINs (99 percent) in asins, no title or image
price, currency, listPrice, unitPricethe price shown, the struck through list price, the price per unitprice 99 to 100 percent of product placements; list price 66 to 77; unit price 22 to 27
rating, reviewCount, boughtPastMonth, badgeas shown on the placementrating and reviews 98 to 100 percent of cards and carousel products; videos carry a rating (98 percent) and no review count; Shop by type products carry neither
brand, headline, logoUrl, storeUrl, videoUrl, asinsSponsored Brands placements: the brand, its headline, logo, store link, video and productsbanner: brand 100, headline 97, logo 99, store link 51 percent; footer brands: brand 100, headline 15 percent
adId, campaignId, sku, advertiserIdAmazon's ids of the ad and its campaignad and campaign ids 99 to 100 percent
organicRank, organicPagethe product's rank among the organic results of the pages read for this sample, when it also ranks without paying17 percent of Sponsored Products cards
advertiserName, payerName, advertiserSellerId, targetingEU stores, when asked: who advertised, who paid, the advertiser's seller account, and whether the search words, the location or past activity selected the ad81 percent of EU rows (footer brands and most banners carry no advertiser id)
merchantIdthe seller of the offer shown on a card48 percent of cards
timesShownOnPage, otherPositionsan ad Amazon showed twice in the same kind of placement on one page is one row, with its other place listed100 percent

Three more row types, all free. A keyword row per keyword: pages and samples read, placements per type, the advertised ASINs ranked by the share of samples they appeared in, their share of all placements and best page 1 position (share of voice), the Sponsored Brands by placements, Amazon's result count, and whether the keyword was finished. A status row for anything that delivered no placement: a keyword with no results (Amazon sometimes shows ads on an empty result page; those match nothing you searched for and are counted, not delivered), a page that came back with its ads hidden on every read, a page with results but no ad at all, a URL or value that could not be used, keywords not read because the run stopped. One summary row with every counter and the billing figures.

Placement types and filters

Placement types limits the rows to the kinds you want: you pay for those rows, plus the Search page fee on each page that delivered at least one of them. A page whose placements are all of other types is read but earns nothing, so it counts against the allowance below; a type Amazon rarely shows (sponsored_brand_collection) can end a run of many keywords after a few of them. The same ad shown in two kinds of placement (a grid card and a carousel, the banner and a footer brand) is two placements and two rows; shown twice in the same kind of placement on one page, it is one row.

Samples and share of voice

With Samples per keyword above 1, each keyword is read that many times in the run (each read is a separate page load on a fresh address). The keyword row then shows, for each advertised ASIN, in how many samples it appeared (samplesSeen, appearanceRate), its share of all placements of the keyword (sharePercent) and its best page 1 position. Each sample is billed like a separate search.

Caps and the charge limit

maxPlacements caps the run, maxPlacementsPerKeyword each keyword. A run also stops at the charge limit you set on it: a page is delivered only as far as its page fee and whole rows fit under the limit. Every stop is named in the summary, and keywords not read are listed in one free row.

Reads that earn nothing have an allowance: pages Amazon served with its ads hidden, blocked requests, keywords without results. A run may spend about USD 0.006 of such reads before it has charged anything, plus a share of every placement and page it has charged; the requests that end in a charged page do not count. In practice a single amazon.com keyword gets up to three reads of its first page, and a list of keywords keeps going as long as its keywords mostly have ads. A run that reaches the allowance ends with the rest of its keywords in one free skipped row; run them again.

How much does it cost to scrape Amazon sponsored products?

Pay per event, no subscription. The Store pricing card shows these same prices per 1,000 events: "$20.00 / 1,000" on the Search page row means one search page costs 2 cents.

EventFreeBronzeSilverGoldWhat it is
Ad placement (per 1,000)$0.79$0.79$0.69$0.59one placement row delivered
Search page (per 1,000)$20.00$20.00$18.00$16.00one result page that delivered at least one placement row
Advertiser name (per 1,000)$1.00$1.00$0.90$0.80one advertiser whose EU advertiser and payer names were found, once per run (only when you ask for names)
Actor start$0.029$0.029$0.029$0.029once per run

Platinum and Diamond plans pay the Gold price. Free: pages read again because Amazon hid their ads or blocked the request, keywords without results and the ads Amazon shows on them, status rows, keyword rows and the summary.

Worked examples at the Free tier price, with the median of 25 placements per page: one keyword, one page costs 0.029 + 25 x 0.00079 + 0.02 = about $0.069. Twenty-five keywords, one page each: 0.029 + 25 x (25 x 0.00079 + 0.02) = about $1.02. Twenty-five keywords with three samples each: about $3.0.

Input

FieldTypeWhat it does
keywordslist of textkeywords, or Amazon search URLs (https://www.amazon.com/s?k=..., with any filters), up to 500. Also read as searchTerms, search, queries; URLs also under searchUrls, startUrls
marketplacetextthe store for keywords: com, co.uk, de, it, es, nl, se, pl, com.be, ie, ca, com.mx, com.br, com.au, co.jp, in, ae, sa, sg, com.tr, eg (default com); store domains and country names are read too
pages1 to 5result pages per keyword (default 1)
samples1 to 10reads of each keyword in the run (default 1)
placementTypeslistonly these placement types (default every type)
advertiserNamestrue or falseEU advertiser and payer names (default false; EU stores only)
maxPlacements, maxPlacementsPerKeywordwhole numberscaps (default none)

An input with no keyword field at all runs the sample search ("protein powder" on amazon.com). An empty keyword list, a value that is not text, a number out of range or a store this Actor does not search is refused with a free row, and nothing is fetched.

API examples

curl -X POST "https://api.apify.com/v2/acts/automation_craft~amazon-sponsored-products-scraper/run-sync-get-dataset-items?token=YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{"keywords": ["protein powder", "creatine"], "marketplace": "com", "pages": 2}'
import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor('automation_craft/amazon-sponsored-products-scraper').call({ keywords: ['proteinpulver'], marketplace: 'de', advertiserNames: true });
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items.filter((i) => i.type === 'placement').length);
from apify_client import ApifyClient
client = ApifyClient("YOUR_TOKEN")
run = client.actor("automation_craft/amazon-sponsored-products-scraper").call(run_input={"keywords": ["yoga mat"], "samples": 3})
rows = [i for i in client.dataset(run["defaultDatasetId"]).iterate_items() if i["type"] == "keyword"]

What this Actor does not do

  • amazon.fr. Amazon's French store answers automated requests with a browser challenge that only a full browser passes; this Actor does not run one, so amazon.fr is not offered.
  • Organic results as rows. It delivers paid placements; the organic rank of an advertised product is on its row, the organic results themselves are not delivered.
  • Display ads. The bottom banner and the left column ad frames are filled by a script after the page loads and carry no product; they are not delivered.
  • A delivery location. Pages are read as a visitor from the store's country sees them; no postal code or delivery address is set.
  • Mobile layouts. The desktop result page is read; the mobile page shows a different set of placements.
  • Prime. Amazon does not show the Prime badge to visitors who are not signed in, so there is no Prime field.
  • Ad spend, bids, impressions or clicks. Amazon does not publish them on the search page. In the EU, the Amazon Ad Library holds impressions per ad.
  • Monitoring with memory. Each run is a fresh reading of the keyword; it does not remember earlier runs.
  • Search volume, coupon and delivery text, product details or sales estimates. It reads the ads of the result page; product pages are the job of the Amazon Product Scraper listed below.
  • Advertiser names outside the EU. amazon.com, amazon.co.uk and the other non EU stores do not state who advertised.

FAQ

Where can I see my competitors' ads on Amazon?

On the search result pages of the keywords you share with them: Sponsored Products cards, sponsored carousels and Sponsored Brands placements. This Actor reads those pages for your keyword list and gives one row per placement with the advertised ASIN, its position and Amazon's ad id, so you can see who bids on your keywords and where they show.

How do I measure share of voice on an Amazon keyword?

Read the keyword several times with Samples per keyword (Amazon rotates its ads between page loads). The keyword row lists each advertised ASIN with the share of samples it appeared in, its share of all placements and its best page 1 position, and the Sponsored Brands by placements.

How do I find out who is behind an Amazon ad?

In the EU stores Amazon states, for every ad, the advertiser and who paid for it. Switch on EU advertiser and payer names and both names are added to the rows (they differ often: a distributor advertising a brand's product, for example). The names are as Amazon publishes them under the EU Digital Services Act; a small seller's name can be a person's name, which is why the switch is off by default. Outside the EU Amazon shows no such statement; the ad and campaign ids and, on cards, the offer's seller id are on the rows everywhere.

Can I scrape Amazon search results with ads without being blocked?

The Actor reads every page from a residential address in the store's own country, through Amazon's own search call, and asks again on a fresh address when Amazon blocks a request or hides its ads. Pages that never came back with their ads are reported in a free status row and not billed.

Why does this Actor run with limited permissions?

It needs nothing beyond its own run: it writes to the run's dataset and to the run's own key-value store (a small ledger that keeps a restarted run from delivering a row twice). Limited permissions keep it from reading or changing anything else in your account.

Changelog

  • 0.1 (2026-10-08): first version. 21 stores, seven placement types, pages 1 to 5, samples, EU advertiser and payer names, organic rank on ad rows, free rows for keywords without results and pages served without ads.

More data tools by Automation Craft