Import BscScan Data to Google Sheets

In this guide, we’ll walk through how to pull data from the BscScan API directly into Google Sheets, using the API Connector add-on for Sheets.

We'll first get an API key from BscScan, and then set up a request to pull in data to your spreadsheet.


Before You Begin

Click here to install the API Connector add-on from the Google Marketplace.

Part 1: Get Your BscScan API Key

  1. While logged into BscScan, open the Account menu dropdown and click API Keys
  2. In the API Keys menu click Add
  3. Name your API key and click Continue.
  4. You will now see your API key, copy it down and keep it safe as we'll need it shortly.

Part 2: Pull Data from BscScan into Sheets

The easiest way to get started with the BscScan API is through API Connector’s built-in integration.

  1. In Sheets, open API Connector and create a new request (Extensions > API Connector > Open > Create request)
  2. Select BscScan from the drop-down list of applications
  3. Choose an endpoint. We'll start with the endpoint for fetching 'normal' transactions.
  4. In the parameters section, enter your API key and the address of interest.
  5. Choose a destination sheet, name your request, and hit Run to see the response data in your sheet.
  6. That's it! If you like, you can double-check that the data in your sheet matches the data you see when you search BscScan's search box by address. It should be exactly the same:

Part 3: Create a Custom API Request

Alternatively, you can run your own custom requests instead of using API Connector’s pre-built integration, using any of the URLs shown in the API documentation. Here's an example request configuration:

  • ApplicationCustom
  • MethodGET
  • Request URL
  • OAuthNone

Part 4: API Documentation

Official API documentation:

25 thoughts on “Import BscScan Data to Google Sheets”

  1. Hi Ana, What i'm trying to do is to extract all the data in a specific period (like from 01/12/2021 to 10/12/2021) from a specific contract without restriction of 5000 records for example if try to do it there is a limitation (for example -->

    Resuming - >I need to analyze all the transactions from a specific contract without limit of 5000 records max.

    I've seen the API also has a limit of 10.000 records..

    Thanks in advance!

    • Hey Paul, a request URL Like should get you what you're looking for. It will send 10,000 records into your sheet.

      • Hey Ana,

        I did just like you answered to Paul to get 10,000 records of transactions of a particular token, but it's missing the DateTime and Method fields (which you get when you download it as .cvs export file from BSSCAN)
        Am i missing something or should i put another request url ? If so which one cause i can't seem to find the correct one.
        Thanks for your answer.

      • I think that's just how BscScan returns data, they didn't set their API to produce exactly the same output as their CSV exports. Instead of a DateTime field, the API returns a timeStamp field, which contains the date and time as a UNIX timestamp. To convert it, you can set your data destination to cell B1 and enter the following function into cell A1 (info): =arrayformula(if(E2:E<>"",EPOCHTODATE(E2:E,1),"")) . That function will convert all the UNIX timestamps in column E to regular Sheets dates. (If the values initially look like 45077, use the Sheets format menu to display them as dates).
        As for the Method field, when I test this API request I see a field called functionName with values like "transfer" and "approve". That looks like the method to me, or are you looking for something else?

      • Hey Ana,
        I reply to your message from May 31, 2023 at 4:36 am (there's no reply button at the end of that message)

        Thanks for your answer and the unix timestamp conversion procedure.

        For the method field, i'm looking for add liquidity, swap, lock, multicall... (the one ones you get with .cvs)

      • Hey Ana,
        I think i'll stick with .cvs, probably easier and has what i look for.
        Thanks for your work and taking the time to answer !

  2. bom eu gostaria de um script mais simples
    eu tenho algumas moedas de jogo que possuo
    queria listas essas moedas e cota-las apenas
    em USDT, ETH, BNB e BRL
    Seria possível, um scrip para encerrir as moedas que preciso nessas 4 cotações

    • Their documentation says “This API endpoint returns a maximum of 10000 records only.” I tested and confirmed that you can’t get more than 10k transactions, even if you apply pagination parameters. Can you split up your request to ensure each request is below their limit?

  3. This is a very well made instructions, thank you for sharing the knowledge.
    However, I can't get the token transfer table (BEP-20) from a specific address. When I try to run your example (replacing the addres and API), it gives me "no transactions found"

    Any idea?

    • You'll need to use the "Get a list of 'BEP-20 Token Transfer Events' by Address" endpoint as described here. Basically you just need to use an action of tokentx instead of txlist, so this URL should work:

  4. Good afternoon Anna, great article!!

    I'm starting my studies, I'm interested in doing a project for college, in it I want to study on the purchase and sale data of a certain currency. Can you tell me if in the API I can have access in addition to HASH, purchase, sale and quantity, I want to have access to the portfolios to build an investor profile.

    Sorry, my english is not the best

    • I'm not sure I totally understand your question, but I think you might be asking how to get the token holdings of a particular wallet?
      In that case you could run a request URL to get token balances, specifying the contract token address and the address you're interested in, like this:

      You would need to repeat that for each token contract address.

  5. Hi Ana,
    I want to download all the transactions of a coin involved in a scam for my thesis and stumbled upon this page. I see you mentioned a couple of times that this method limits the download to 10k records. Is there a way to download all of the records of a coin for a given date range? Thanks!

    • I don't think all endpoints have that limit. But either way, you can always limit the date range such that each pull has less than 10K records in it.

  6. Hi Ana,
    Please i want to know where can i find the approvals that have been made for a specific ERC20 token, for example i've approved for my testing wallet to spend some tokens i tried to find the transaction using just my receiving wallet address but i didn't find the transaction in bscscan so i think i can find it using api.
    Thank you!

      • Great, almost all the Account endpoints are in the BscScan integration. So just click API Connector's application dropdown menu, search for BscScan, and then select the endpoint you need from the endpoint menu, e.g. "Get BEP-20 Token transfer events" or "Get normal transactions" etc. You'll need to enter your API key in the apikey parameter, which you can get as described here.

  7. Hi Ana,
    Thank you for the great info and explanation.
    I have a question on creating a different query (custom):
    I want to get all the output of all Blocks created during a certain time period, without the limitation to a certain block number.
    The variables I would like to see the output are:
    Transactions count
    Block Reward in BNB
    Equivalent Fiat (USD) reward
    Where date between say June 1/22 to June 30/22.
    Can this be done with the API?
    Thank you.


Leave a Comment

Jump To