Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/nelsondane/public-invest-api
Unofficial reverse-engineered Public.com Invest API written in Python Requests
https://github.com/nelsondane/public-invest-api
graphql-api investing-api reverse-engineering stocks-api
Last synced: about 1 month ago
JSON representation
Unofficial reverse-engineered Public.com Invest API written in Python Requests
- Host: GitHub
- URL: https://github.com/nelsondane/public-invest-api
- Owner: NelsonDane
- License: mit
- Created: 2024-01-21T00:23:34.000Z (10 months ago)
- Default Branch: main
- Last Pushed: 2024-05-21T02:51:21.000Z (6 months ago)
- Last Synced: 2024-10-11T13:03:33.928Z (about 1 month ago)
- Topics: graphql-api, investing-api, reverse-engineering, stocks-api
- Language: Python
- Homepage:
- Size: 69.3 KB
- Stars: 12
- Watchers: 1
- Forks: 6
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Unofficial Public.com Invest API
This is an unofficial API for Public.com. It is a simple Python wrapper around the Public.com requests API. It is not affiliated with Public.com in any way. Use at your own risk.
This is still a very work in progress, so it will have bugs and missing features. Feel free to contribute!
## Installation
```bash
pip install public-invest-api
```## Usage: Logging In
```python
from public_invest_api import Publicpublic = Public()
public.login(
username='your_email',
password='your_password',
wait_for_2fa=True # When logging in for the first time, you need to wait for the SMS code
)
```If you'd like to handle the 2FA code yourself, set `wait_for_2fa=False` and it will throw an Exception relating to 2FA. Catch this, then when you get the 2FA code, call it again with the code:
```python
public.login(
username='your_email',
password='your_password',
wait_for_2fa=False,
code='your_2fa_code' # Should be six digit integer
)
```## Usage: Get Holdings
```python
positions = public.get_positions()
for position in positions:
print(position)
```## Usage: Placing Orders
```python
order = public.place_order(
symbol='AAPL',
quantity=1,
side='BUY', # or 'SELL'
order_type='MARKET', # or 'LIMIT' or 'STOP'
limit_price=None # pass float if using 'LIMIT' order_type
time_in_force='DAY', # or 'GTC' or 'IOC' or 'FOK'
is_dry_run=False, # If True, it will not actually place the order
tip=0 # The amount to tip Public.com
)
print(order)
```## Contributing
Found or fixed a bug? Have a feature request? Feel free to open an issue or pull request!Enjoying the project? Feel free to Sponsor me on GitHub or Ko-fi!
[![Sponsor](https://img.shields.io/badge/sponsor-30363D?style=for-the-badge&logo=GitHub-Sponsors&logoColor=#white)](https://github.com/sponsors/NelsonDane)
[![ko-fi](https://img.shields.io/badge/Ko--fi-F16061?style=for-the-badge&logo=ko-fi&logoColor=white
)](https://ko-fi.com/X8X6LFCI0)## DISCLAIMER
DISCLAIMER: I am not a financial advisor and not affiliated with Public.com. Use this tool at your own risk. I am not responsible for any losses or damages you may incur by using this project. This tool is provided as-is with no warranty.