I've been happy with Databento as a low-friction way to get market data. I liked it so much, I ported their structs and APIs to Golang. [1]
Their EQUS Mini dataset is a great way to dip the toe if you want live data without licensing restrictions. Databento's article talks exactly about how it is sourced, but it is not that it is averaged but anonymized, specifically because of the complexities of upstream exchange licensing. [2]
You don't have to pay $200 per month for that -- that's for all-you-can-eat. You can experiment with pay as you go.
You can use my dbn-go tools to help you... here's the cost to get all the 1-day candlesticks for all the US Equity Symbols for 1-year... which you could use to make all sorts of charts and redistribute them freely (the trickiest part honestly):
$ dbn-go-hist cost --dataset EQUS.SUMMARY -t 2024-07-01 -e 2025-07-01 -s ohlcv-1d ALL_SYMBOLS
EQUS.SUMMARY ohlcv-1d $ 4.380178 156772672 bytes 2799512 records
$ dbn-go-hist cost --dataset XNAS.ITCH -t 2024-07-01 -e 2025-07-01 -s ohlcv-1d ALL_SYMBOLS
XNAS.ITCH ohlcv-1d $ 3.784698 135459632 bytes 2418922 records
So $4.38 for all that data or $3.78 for just the NASDAQ exchange (not sure of redistribution of that one).I hang out on their Slack. Today there was a deep discussion about optimizing C++ SPSC queues, although it is usually isn't too technical like that. They are pretty transparent about how they implement things.
[1] https://github.com/NimbleMarkets/dbn-go
[2] https://databento.com/blog/databento-us-equities-mini-now-av...