Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/tarsil/polygonscan-python

The Polygon Scan APIs for python based from the fork of bscscan-python
https://github.com/tarsil/polygonscan-python

Last synced: 9 days ago
JSON representation

The Polygon Scan APIs for python based from the fork of bscscan-python

Awesome Lists containing this project

README

        

# polygonscan-python














A complete Python API for PolygonScan.com


Powered by PolygonScan.com APIs


Available on PyPI


A fork of the bscscan-python package.

A minimal, yet complete, Python API for [polygonscan.com](https://polygonscan.com/).

This package was based on [bscscan-python](https://github.com/pcko1/bscscan-python) and
applied to the polygon network. A special thanks to the [creator](https://github.com/pcko1).

Available on [PyPI](https://pypi.org/project/polygonscan-python/). Powered by [polygonscan.com APIs](https://polygonscan.com/apis#misc).

___

## Endpoints

The following endpoints are provided:

Accounts (source)

* `get_matic_balance`
* `get_matic_balance_multiple`
* `get_normal_txs_by_address`
* `get_normal_txs_by_address_paginated`
* `get_internal_txs_by_address`
* `get_internal_txs_by_address_paginated`
* `get_internal_txs_by_txhash`
* `get_internal_txs_by_block_range_paginated`
* `get_erc20_token_transfer_events_by_address`
* `get_erc20_token_transfer_events_by_contract_address_paginated`
* `get_erc20_token_transfer_events_by_address_and_contract_paginated`
* `get_erc721_token_transfer_events_by_address`
* `get_erc721_token_transfer_events_by_contract_address_paginated`
* `get_erc721_token_transfer_events_by_address_and_contract_paginated`
* `get_mined_blocks_by_address`
* `get_mined_blocks_by_address_paginated`

Contracts (source)



* `get_contract_abi`
* `get_contract_source_code`

Transactions (source)



* `get_contract_execution_status`
* `get_tx_receipt_status`

Blocks (source)



* `get_block_reward_by_block_number`
* `get_est_block_countdown_time_by_block_number`
* `get_block_number_by_timestamp`

GETH/Parity Proxy (source)

* `get_proxy_block_number`
* `get_proxy_block_by_number`
* `get_proxy_uncle_by_block_number_and_index`
* `get_proxy_block_transaction_count_by_number`
* `get_proxy_transaction_by_hash`
* `get_proxy_transaction_by_block_number_and_index`
* `get_proxy_transaction_count`
* `get_proxy_transaction_receipt`
* `get_proxy_call`
* `get_proxy_code_at`
* `get_proxy_storage_position_at`
* `get_proxy_gas_price`
* `get_proxy_est_gas`

Tokens (source)



* `get_total_supply_by_contract_address`
* `get_acc_balance_by_token_and_contract_address`

Gas Tracker (source)



* `get_est_confirmation_time`
* `get_gas_oracle`

Stats (source)



* `get_total_matic_supply`
* `get_matic_last_price`

*If you think that a newly-added method is missing, kindly open an [issue](https://github.com/tarsil/polygonscan-python/issues) as a feature request and I will do my best to add it.*

## Installation

Before proceeding, you should register an account on [polygonscan.com](https://polygonscan.com/)
and [generate a personal API key](https://polygonscan.com/myapikey) to use.

If you wish to have access to the PRO endpoints, you should obtain elevated privileges via PolygonScans's
subscription service.

Install from source:

``` bash
pip install git+https://github.com/tarsil/polygonscan-python
```

Alternatively, install from [PyPI](https://pypi.org/project/polygonscan-python/):

```bash
pip install polygonscan-python
```

## Unit tests

In `bash`, test that everything looks OK on your end using your `YOUR_API_KEY` (without quotation marks)
before proceeding:

``` bash
bash run_tests.sh YOUR_API_KEY
````

This will regenerate the logs under `logs/` with the most recent results and the timestamp of the execution.

## Usage

In `python`, create a client with your personal [polygonscan.com](https://polygonscan.com/) API key:

E.g:
``` python
from polygonscan import PolygonScan

with PolygonScan("API_KEY",False) as matic:
print(matic.get_matic_balance(address="0xddbd2b932c763ba5b1b7ae3b362eac3e8d40121a"))
```

Then you can call all available methods, e.g.:

``` python
matic.get_matic_balance(address="0xddbd2b932c763ba5b1b7ae3b362eac3e8d40121a")

> '40891631566070000000000'
```
You can also choose one of the other testnets:
``` python
matic = PolygonScan(YOUR_API_KEY, net="ropsten") # net name is case-insensitive, default is main
```

## Examples

Examples (arguments and results) for all methods may be found as JSON files
[here](https://github.com/tarsil/polygonscan-python/tree/master/logs).
For example, if you want to use the method `get_block_number_by_timestamp`,
you can find the supported arguments and the format of its output in its respective
[JSON file](logs/standard/get_block_number_by_timestamp.json):

``` json
{
"method": "get_block_number_by_timestamp",
"module": "blocks",
"kwargs": {
"timestamp": "1578638524",
"closest": "before"
},
"log_timestamp": "2020-10-28-12:34:44",
"res": "9251482"
}
```

where `kwargs` refer to the required named arguments and `res` refers to the expected result if you were to run:

``` python
eth.get_block_number_by_timestamp(timestamp="1578638524", closest="before")

> '9251482'
```

**Disclaimer**: Those examples blindly use the arguments originally showcased
[here](https://api.polygonscan.com/apis) and the selected wallets/contracts
do not reflect any personal preference. You should refer to the same source for additional
information regarding specific argument values.

## Issues

For problems regarding installing or using the package please open an
[issue](https://github.com/tarsil/polygonscan-python/issues).
Kindly avoid disclosing potentially sensitive information such as your API keys or your wallet addresses.

Feel free to leave a :star: if you found this package useful.

___

Powered by [polygonscan.com APIs](https://polygonscan.com/apis).