Alpaca API lets you trade stocks with a commission free API. They have a REST API and you can also receive data over websockets via their polygon.io integration if you have a brokerage account.
Tradier lets you trade stocks and options. Tradier option trading is commission free if you have a subscription, otherwise there is a small commission per trade. They have an API for market data over REST API and websockets.
TD Ameritrade has an API and tda-api python package makes it easier to use, but not easy to paper trade with it for testing.
You can also use an unofficial Robinhood package like robin_stocks, but Robinhood doesn't officially support any of this.
Interactive Brokers supports the most instruments, including many currencies, futures, etc, but you will pay a small monthly fee for historical and real time data, plus commissions. I recommend the ib_insync package to make their API easier to use.
Self promo: I have a YouTube channel that is focused on this topic:
https://youtube.com/c/parttimelarry