Skip to main content

Python trading library for Prosper.com

Project description

Prosper API client for Python

Python trading library for Prosper.com

GitHub Workflow Status (with event) PyPI - Version PyPI - Python Version PyPI - License Code Climate coverage Code Climate maintainability OpenSSF Best Practices GitHub commit activity (branch) GitHub issues

Installation

With Pip

pip install prosper-api

Optional keyring support

pip install 'prosper-api[secure]'

With Poetry

poetry add prosper-api

Optional keyring support

poetry add 'prosper-api[secure]'

Setup

ℹ️ The library currently only supports personal use, where the client id and credentials are from the same account. Support for multi-account mode is planned.

Config file location

  • Linux/Unix: $HOME/.config/prosper-api/config.toml
  • Windows: %HOMEDIR%%HOMEPATH\AppData\Local\prosper-api\prosper-api\config.toml
  • MacOs: $HOME/Library/Application Support/prosper-api/config.toml

Default

Create a config file with the following contents:

[credentials]
client-id = "0123456789abcdef0123456789abcdef"
client-secret = "fedcba9876543210fedcba9876543210"
username = "PROBABLY_YOUR_EMAIL_ADDRESS"
password = "AWESOME_PASSWORD"

More secure

ℹ️ You must have installed keyring or used the '[secure]' mode when installing the library.

Remove the client-secret and password portions of the config:

[credentials]
client-id = "0123456789abcdef0123456789abcdef"
username = "PROBABLY_YOUR_EMAIL_ADDRESS"

Run the following to store your credentials securely in your OS credentials storage, e.g. Keychain for MacOS, etc. For each command, you will be prompted to enter the corresponding secret. For 'CLIENT_ID', enter the client secret. For 'USERNAME' enter the corresponding password.

keyring set prosper-api '{CLIENT_ID}'
keyring set prosper-api '{USERNAME}'

Use

See a sample bot for concrete usage.

Get account details

The following will get the details of your account, including available cash and investment allocations.

from prosper_api.client import Client
from prosper_api.models import Account

client = Client()
account: Account = client.get_account_info()

Search listings

The following will get all the current listings you haven't invested in.

from prosper_api.client import Client
from prosper_api.models import Listing, SearchListingsRequest, SearchListingsResponse
from typing import List

PAGE_SIZE=25
client = Client()
listings: List[Listing] = []
offset = 0
while True:
    result: SearchListingsResponse = client.search_listings(SearchListingsRequest(invested=False, biddable=True, limit=PAGE_SIZE, offset=offset))
    listings += result.result
    offset += PAGE_SIZE
    if len(listings) >= result.total_count or len(result.result) < PAGE_SIZE:
        break

ℹ️ The full set of filters listed in the Prosper API docs are available

Place order

The following will place an order, given a listing id.

from prosper_api.client import Client
from prosper_api.models import Order

client = Client()
listing_id: int = 12341234
order_dollar_amount: float = 25
order_result: Order = client.order(listing_id, order_dollar_amount)

List notes

The following will list all the notes in your account. The same pattern can be used to list orders, loans, and payments.

from prosper_api.client import Client
from prosper_api.models import Note, ListNotesRequest, ListNotesResponse
from typing import List

client = Client()
notes: List[Note] = []
PAGE_SIZE = 25
offset = 0
while True:
    result: ListNotesResponse = client.list_notes(ListNotesRequest(limit=PAGE_SIZE, offset=offset, sort_by="age_in_months", sort_dir="asc"))
    notes += result.result
    offset += PAGE_SIZE
    if len(notes) >= result.total_count or len(result.result) < PAGE_SIZE:
        break

Configuration

Available config values:

["prosper-api.credentials.client-id"]
type = "str"
optional = false
constraint = "^[a-f0-9]{32}$"
description = "The client-id from Prosper."

["prosper-api.credentials.client-secret"]
type = "str"
optional = true
constraint = "^[a-f0-9]{32}$"
description = "The client-secret from Prosper; can be stored and accessed securely using the keyring library."

["prosper-api.credentials.username"]
type = "str"
optional = false
description = "Your Prosper username"

["prosper-api.credentials.password"]
type = "str"
optional = true
description = "Your Prosper password; can be stored and accessed securely using the keyring library."

["prosper-api.auth.token-cache"]
type = "str"
optional = false
default = "/Users/graham/Library/Caches/prosper-api/token-cache"
description = "The filesystem location where the auth token will be cached."

Feedback

This project uses GitHub issues for feature requests and bug reports.

Contributing

This project uses Poetry to manage dependencies and building. Follow the instructions to install it. Then use poetry install --all-extras to install the project dependencies. Then run poetry run autohooks activate to set up the pre-commit hooks. Please ensure the hooks pass before submitting a pull request.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

prosper_api-0.11.0.tar.gz (21.2 kB view details)

Uploaded Source

Built Distribution

prosper_api-0.11.0-py3-none-any.whl (20.4 kB view details)

Uploaded Python 3

File details

Details for the file prosper_api-0.11.0.tar.gz.

File metadata

  • Download URL: prosper_api-0.11.0.tar.gz
  • Upload date:
  • Size: 21.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.6.1 CPython/3.12.4 Linux/6.5.0-1023-azure

File hashes

Hashes for prosper_api-0.11.0.tar.gz
Algorithm Hash digest
SHA256 f205c09542651d84a2c9ac70e677445bb013084f842995036f5e5c1c6b31dc49
MD5 c8f1886b08a49fd85be47be7a363db6f
BLAKE2b-256 7bca04e1bc305e61ace4f9ec6226e81f81ff640268b42cb88c3aab7126502830

See more details on using hashes here.

File details

Details for the file prosper_api-0.11.0-py3-none-any.whl.

File metadata

  • Download URL: prosper_api-0.11.0-py3-none-any.whl
  • Upload date:
  • Size: 20.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.6.1 CPython/3.12.4 Linux/6.5.0-1023-azure

File hashes

Hashes for prosper_api-0.11.0-py3-none-any.whl
Algorithm Hash digest
SHA256 b551f591c7f7b4382c4d251ae99f1edc07ab7e90ff99ef9c0a177fd3282379a4
MD5 2b71fac2222bc44800aae66f308817da
BLAKE2b-256 99c4ae4c9092c15e61b1e19e96f987e6962c3d9dd972f59710cc6efd65b15109

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page