Skip to main content

Python bindings for the EnsembleData API

Project description

EnsembleData Python API

pypi pypi

Documentation

Check out the API docs to see which endpoints are available for each social media and for detailed descriptions of their parameters and functionality.

Installation

Install the package with pip as you would any other python package.

pip install ensembledata

Requirements

  • The package only supports Python 3.7 and above.

Usage

Register to get your free API token.

from ensembledata.api import EDClient


client = EDClient("API-TOKEN")
result = client.tiktok.user_info_from_username(username="daviddobrik")

print("Data: ", result.data)
print("Units charged:", result.units_charged)

# Other Examples:
# result = client.instagram.user_info(username="daviddobrik")
# result = client.youtube.channel_subscribers(channel_id="UCnQghMm3Z164JFhScQYFTBw")

TikTok Guide

Get started with the TikTok API Guide. Find out which endpoints are available, and how you can use them with examples using the ensembledata python package.

Instagram Guide

Get started with the Instagram API Guide. Find out which endpoints are available, and how you can use them with examples using the ensembledata python package.



Missing Endpoints / Parameters

If you find that one of the endpoints from our API docs is not yet available in this package, you can use the EDClient.request method to specify the endpoint manually in the meantime.

from ensembledata.api import EDClient

client = EDClient("API-TOKEN")
result = client.request("/instagram/[example]", params={"foo": "...", "bar": "..."})

If you find that one the parameters to an existing endpoint is missing, you can still send this parameter via the extra_params dictionary which is available on all endpoint methods. See the example below:

from ensembledata.api import EDClient

client = EDClient("API-TOKEN")
result = client.instagram.user_info(username="...", extra_params={"baz": "..."})


Handling Errors

In the API docs, each endpoint lists a handful of possible errors the API may respond with. You can handle these errors by catching the EDError exception.

from ensembledata.api import EDClient, EDError, errors


client = EDClient("API-TOKEN")
try:
    result = client.tiktok.user_info_from_username(username="daviddobrik")
except EDError as e:

    # Rate limit exceeded...
    if e.status_code == errors.STATUS_429_RATE_LIMIT_EXCEEDED:
        print(e.detail)

    # Subscription expired...
    if e.status_code == errors.STATUS_493_SUBSCRIPTION_EXPIRED:
        print(e.detail)

except Exception as e:
    # Some other error occurred, unrelated to the EnsembleData API
    # E.g. httpx.RequestError, json.JSONDecodeError
    pass

    


Async

This package provides an asynchronous client, EDAsyncClient, which will give you access to async versions of all the same methods that can be found on the EDClient.

import asyncio

from ensembledata.api import EDAsyncClient


async def main():
    client = EDAsyncClient("API-TOKEN")
    result = await client.tiktok.user_info_from_username(username="daviddobrik")

if __name__ == "__main__":
    asyncio.run(main())

Network Retries

By default the EDClient will perform 3 retries when it encounters network issues. If you would like to customise this behaviour, you can pass in the max_network_retries param as show below:

Note: if the request times out, it will not be retried.

from ensembledata.api import EDClient

client = EDClient("API-TOKEN", max_network_retries=5)

Configure Timeout

If you would like control over the read timeout, you can configure this either for all request by setting timeout when creating the EDClient, or you can specify the timeout per request, on any of the individual methods as shown below:

Note: the timeout is specified in seconds.

from ensembledata.api import EDClient

client = EDClient("API-TOKEN", timeout=120)
result = client.tiktok.user_info_from_username(username="daviddobrik", timeout=10)

Types

The package uses type hints, and is type checked with the latest version of mypy. If you experience any type checking related issues with the package, please let us know by creating an issue.

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

ensembledata-0.2.10.tar.gz (18.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

ensembledata-0.2.10-py3-none-any.whl (13.2 kB view details)

Uploaded Python 3

File details

Details for the file ensembledata-0.2.10.tar.gz.

File metadata

  • Download URL: ensembledata-0.2.10.tar.gz
  • Upload date:
  • Size: 18.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for ensembledata-0.2.10.tar.gz
Algorithm Hash digest
SHA256 9c022f605940d41fa2dc46d852850a95e0994ba79aef6c463007c361361a1d91
MD5 00e6ab0183e3c583f2f06b90c3481a95
BLAKE2b-256 d6ccf96e21a44e76684a8e551cd4b1d53888eb9d82bf674d19ed2f8a14f75065

See more details on using hashes here.

Provenance

The following attestation bundles were made for ensembledata-0.2.10.tar.gz:

Publisher: release.yml on EnsembleData/ensembledata-python

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file ensembledata-0.2.10-py3-none-any.whl.

File metadata

  • Download URL: ensembledata-0.2.10-py3-none-any.whl
  • Upload date:
  • Size: 13.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for ensembledata-0.2.10-py3-none-any.whl
Algorithm Hash digest
SHA256 e40dd984a23b1352eff41aa4a119de91c7b1e0eb7d621e67eb8be5d63f259e55
MD5 1c57b87980140e6a0c679f795e85d864
BLAKE2b-256 170417bbc1beb97ffa07a5de9056c5989790b1f3451cbc136a3c960a249a3f1a

See more details on using hashes here.

Provenance

The following attestation bundles were made for ensembledata-0.2.10-py3-none-any.whl:

Publisher: release.yml on EnsembleData/ensembledata-python

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

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