Amazon's sponsored share of voice for a keyword is how much of the result page is labeled sponsored: true versus organic - /amazon-search returns both in one consecutively numbered list, so a simple filter gives the split and the first sponsored position in one call. The one caveat worth knowing before you trust the number: the API detects the sponsored label mainly from Amazon's own markup, and only falls back to matching the label text when that markup is missing - that fallback only recognizes English and German.
Key Takeaways
- position is 1-based and consecutive across ALL returned results - sponsored and organic share one numbering.
- sponsored is a per-result boolean; filter and count it directly, no separate call needed.
- Sponsored detection uses Amazon's own markup first; only the text-match fallback is English/German-only, so marketplaces relying on it can undercount.
- count above 50 is a billed 400 ('Count Max: 50') - validate client-side first.
- There is no brand field, search volume, autocomplete or reverse-ASIN lookup on this endpoint.
What does a sponsored share of voice number actually measure?
| Field | Behavior | Caveat |
|---|---|---|
| position | 1-based, consecutive across returned results | sponsored and organic share one numbering |
| sponsored | true/false per result | markup-based; text fallback is English/German only |
| reviewAmount | 0 when no count shown or found | not necessarily zero reviews |
How do I compute the sponsored/organic split for a keyword?
sponsored_share() filters searchResults on the sponsored flag, then reports the count, the percentage, and the first sponsored position - None when nothing on the page is sponsored, never a crash. get() and new_session() come from the Python quickstart; the full result shape is documented in the Search Results API guide.
share_of_voice.py - sponsored vs organic split for a keyword
from sellermagnet import get, new_session
def sponsored_share(session, q: str, marketplace_id: str, count: int = 50) -> dict:
"""Sponsored vs organic split on page 1 for a keyword. position is 1-based and
consecutive across the results actually returned (sponsored and organic share
the same numbering), so first_sponsored_position is directly comparable to an
organic rank. Sponsored-label detection uses Amazon's own markup first; only the
text-match fallback (used when markup is missing) is English/German
only, so a marketplace relying on that fallback can undercount."""
if not 1 <= count <= 50:
raise ValueError("count must be 1-50 (50+ is a billed 400 on the API)")
data = get(session, "amazon-search", q=q, marketplaceId=marketplace_id, count=count)
results = data["searchResults"]
sponsored = [r for r in results if r["sponsored"]]
return {
"query": q,
"total": len(results),
"sponsored_count": len(sponsored),
"sponsored_share_pct": round(100 * len(sponsored) / len(results), 1) if results else 0.0,
"first_sponsored_position": sponsored[0]["position"] if sponsored else None,
}
if __name__ == "__main__":
session = new_session()
print(sponsored_share(session, "wireless earbuds", "ATVPDKIKX0DER", count=10))
print(sponsored_share(session, "very niche obscure query", "ATVPDKIKX0DER", count=10))
Example output (illustrative keyword and results)
{'query': 'wireless earbuds', 'total': 10, 'sponsored_count': 3, 'sponsored_share_pct': 30.0, 'first_sponsored_position': 1}
{'query': 'very niche obscure query', 'total': 3, 'sponsored_count': 0, 'sponsored_share_pct': 0.0, 'first_sponsored_position': None}
Trimmed searchResults entry (example values)
{
"position": 1,
"asin": "B000000001",
"sponsored": true,
"reviewRating": 4.5,
"reviewAmount": 120
}


Does this overlap with keyword rank tracking?
Only partly: share of voice measures the sponsored/organic mix for a keyword as a whole, while tracking your own ASIN's organic and sponsored position over time is a different question answered by the Keyword Rank Tracking guide - use both together rather than one in place of the other.
Frequently Asked Questions
Does a sponsored result consume its own position number, or a separate one?
The same numbering: position is 1-based and consecutive across every result actually returned, sponsored or organic, so the first sponsored position is directly comparable to an organic rank.
Will sponsored_share_pct be accurate on every marketplace?
Reliably wherever Amazon's own markup is present; only the text-match fallback (used when markup is missing) is limited to English and German, so marketplaces depending on that fallback can undercount, never overcount.
What happens with a count above 50?
A billed 400 'Count Max: 50' - validate client-side first so a typo does not cost a credit.
Can I track a specific brand's share of voice this way?
Only by matching productTitle text yourself; the API has no brand field, so title matching can miss variant spellings or match a different seller's listing.
Does this endpoint tell me search volume for a keyword?
No. /amazon-search has no search volume, autocomplete or reverse-ASIN lookup; it only returns the current result page for a query you already have.
Bottom line: filter searchResults on sponsored for an instant share-of-voice split, trust it everywhere Amazon's own markup is detected, know that only the English/German text fallback can undercount, and validate count before it turns into a billed mistake.