Free From Amazon, Not From AWS #
Marketing Stream doesn't cost anything to subscribe to — but it pushes hourly data into your AWS account, and you pay for the plumbing that receives, stores, and processes it. The typical setup touches Firehose (or SQS), S3, and Lambda, plus whatever warehouse you route to. None of these are expensive individually; the surprises come from misconfiguration, not the service itself.
The Line Items #
- Amazon Data Firehose — charged per GB ingested and delivered. Marketing Stream volume is modest, so this is usually small.
- Amazon SNS/SQS — if you use the queue delivery path, per-request and (tiny) storage costs.
- S3 — storage for the raw hourly files, plus PUT/GET request charges.
- Lambda — invocations and duration if you transform or forward records.
- Data transfer — mostly free within a region; cross-region or out-to-internet transfer is where it adds up.
- Downstream warehouse — BigQuery scan/storage or Snowflake compute if you route the data onward.
Realistic Monthly Ranges #
For a small-to-mid advertiser (a handful of profiles, a few Marketing Stream datasets), the AWS footprint is often in the low single-digit dollars per month — sometimes within free-tier limits. For a large advertiser or an agency streaming many profiles and datasets, with active transformation and a warehouse behind it, expect tens of dollars per month, occasionally more if downstream querying is heavy. Either way, it's small relative to the ad spend it optimizes — as long as it's configured well.
Where Bills Actually Blow Up #
The cost surprises are almost always one of these:
- Over-frequent Lambda — invoking per-record instead of per-batch multiplies invocations.
- No S3 lifecycle — raw hourly files pile up forever; storage creeps.
- Unpartitioned warehouse tables — every dashboard query re-scans all history (this hits BigQuery on-demand hard).
- Cross-region transfer — routing data between regions instead of keeping it local.
Keeping It Cheap #
Five settings do most of the work:
- Buffer Firehose — larger buffer intervals/sizes mean fewer, bigger writes.
- S3 lifecycle rules — expire or archive raw files after you've loaded them to the warehouse.
- Partition & cluster warehouse tables by date so queries scan only what they need.
- Batch in Lambda — process records in batches, right-size memory/timeout.
- Keep it in one region — colocate S3, Lambda, and delivery to avoid transfer fees.
Set it up cost-aware from day one: the Marketing Stream Firehose setup guide covers the pipeline, and I build these with cost hygiene baked in.
FAQ #
Does Amazon charge for Marketing Stream?
No. Subscribing is free. You pay only for the AWS services in your own account that receive, store, and process the data.
How much does Marketing Stream cost per month on AWS?
For small-to-mid advertisers, often just a few dollars (sometimes within free tier). For large advertisers or agencies with heavy processing and a warehouse, tens of dollars — still small next to the ad spend it optimizes.
What's the most common cause of an unexpected bill?
Usually unpartitioned warehouse tables (every query re-scans all history) or per-record Lambda invocations. Both are easy to fix with batching and partitioning.
Can I keep it in the AWS free tier?
A modest single-advertiser setup can stay very cheap or near free-tier if you buffer Firehose, add S3 lifecycle rules, and batch your Lambda. Heavy multi-profile streaming will exceed it, but not by much.
Related guides
Data pipelines
Amazon Data in BigQuery vs Snowflake: Which Warehouse for Sellers?
Both BigQuery and Snowflake will happily hold your Amazon SP-API and Ads data — the right pick comes down to your existing stack, your query patterns, and the cost model. Here's a practical comparison aimed at Amazon sellers and agencies, not data engineers.
Read guide →Data pipelines
Storing Amazon Marketing Stream Data in BigQuery: S3 → GCP Transfer Setup
You've got a year of hourly Marketing Stream data piling up in S3. Nobody on the PPC team can query a raw S3 bucket. This walkthrough moves it into BigQuery automatically with the BigQuery Data Transfer Service, models it into something clean, and pipes it out to Google Sheets — no manual exports.
Read guide →Amazon Ads API
Amazon Ads API Rate Limits Explained (And How to Stop Hitting Them)
A 429 storm from the Amazon Ads API almost always means your retry logic is wrong, not that your limits are too low. Here's how the per-endpoint token buckets actually work, what the response headers tell you, and the request patterns that keep you comfortably under the limit.
Read guide →Don't want to build this yourself?
I set this up for sellers and agencies every week. Book a free 30-minute audit of your Amazon data & PPC setup — you'll leave with a plan either way, whether we work together or not.