REST API (Blockscout)
Blockscout v9.0.2GraphQL SupportEtherscan Compatible
RamaScan provides a comprehensive REST API powered by Blockscout. It offers Etherscan-compatible endpoints for easy migration, plus additional Blockscout-specific APIs for advanced querying.
Base URLs
| Environment | Base URL | Explorer |
|---|---|---|
| Mainnet | https://www.ramascan.com/api | https://www.ramascan.com |
| Testnet | https://testbackendapi.ramascan.com | https://pingaksha.ramascan.com |
API Documentation
Authentication
Most endpoints are public. For higher rate limits, include an API key:
API Key Headerbash
curl -H "X-API-KEY: your_api_key" "https://www.ramascan.com/api?module=account&action=balance&address=0x..."âšī¸Rate Limits
Without API key: 5 requests/second, 1000/day
With API key: 20 requests/second, 100000/day
Get an API key at ramascan.com/account/api-key
With API key: 20 requests/second, 100000/day
Get an API key at ramascan.com/account/api-key
Account Endpoints
Get RAMA Balance
Requestbash
GET https://www.ramascan.com/api?module=account&action=balance&address=0x...&tag=latestResponsejson
{
"status": "1",
"message": "OK",
"result": "1000000000000000000" // Balance in wei
}Get Multiple Balances
Requestbash
GET https://www.ramascan.com/api?module=account&action=balancemulti&address=0x...,0x...,0x...&tag=latestGet Transaction List
Requestbash
GET https://www.ramascan.com/api?module=account&action=txlist&address=0x...&startblock=0&endblock=99999999&sort=desc&page=1&offset=10Responsejson
{
"status": "1",
"message": "OK",
"result": [
{
"blockNumber": "1234567",
"timeStamp": "1706300000",
"hash": "0x...",
"from": "0x...",
"to": "0x...",
"value": "1000000000000000000",
"gas": "21000",
"gasPrice": "1000000000",
"gasUsed": "21000",
"isError": "0",
"txreceipt_status": "1"
}
]
}Get Internal Transactions
Requestbash
GET https://www.ramascan.com/api?module=account&action=txlistinternal&address=0x...Get Token Transfers (ERC20)
Requestbash
GET https://www.ramascan.com/api?module=account&action=tokentx&address=0x...&contractaddress=0x...Get NFT Transfers (ERC721)
Requestbash
GET https://www.ramascan.com/api?module=account&action=tokennfttx&address=0x...Contract Endpoints
Get Contract ABI
Requestbash
GET https://www.ramascan.com/api?module=contract&action=getabi&address=0x...Get Contract Source Code
Requestbash
GET https://www.ramascan.com/api?module=contract&action=getsourcecode&address=0x...Verify Contract (Standard JSON Input)
Requestbash
POST https://www.ramascan.com/api?module=contract&action=verifysourcecode
Content-Type: application/x-www-form-urlencoded
contractaddress=0x...
sourceCode={"language":"Solidity","sources":...}
codeformat=solidity-standard-json-input
contractname=contracts/MyContract.sol:MyContract
compilerversion=v0.8.20+commit.a1b79de6
constructorArguements=0x...Contract Verification (Hardhat)
The recommended way to verify contracts is using Hardhat with the hardhat-verify plugin.
Hardhat Configuration
hardhat.config.jsjavascript
require('dotenv').config();
require('@nomicfoundation/hardhat-toolbox');
require('@nomicfoundation/hardhat-verify');
module.exports = {
solidity: {
version: '0.8.20',
settings: {
optimizer: { enabled: true, runs: 200 }
}
},
networks: {
ramestta: {
url: 'https://blockchain.ramestta.com',
chainId: 1370,
accounts: process.env.PRIVATE_KEY ? [process.env.PRIVATE_KEY] : []
},
ramesttaTestnet: {
url: 'https://testnet.ramestta.com',
chainId: 1371,
accounts: process.env.PRIVATE_KEY ? [process.env.PRIVATE_KEY] : []
}
},
etherscan: {
apiKey: {
ramestta: 'abc', // Any string works for Blockscout
ramesttaTestnet: 'abc'
},
customChains: [
{
network: 'ramestta',
chainId: 1370,
urls: {
apiURL: 'https://www.ramascan.com/api',
browserURL: 'https://www.ramascan.com'
}
},
{
network: 'ramesttaTestnet',
chainId: 1371,
urls: {
apiURL: 'https://testbackendapi.ramascan.com',
browserURL: 'https://pingaksha.ramascan.com'
}
}
]
}
};Verify Command
Terminalbash
# Verify a contract
npx hardhat verify --network ramestta CONTRACT_ADDRESS "Constructor Arg 1" "Arg 2"
# Example
npx hardhat verify --network ramestta 0x1234567890abcdef... "MyToken" "MTK" "1000000000000000000000000"âšī¸Blockscout API Key
Blockscout doesn't require a real API key. You can use any string (like "abc") as the API key in the config.
Transaction Endpoints
Get Transaction Status
Requestbash
GET https://www.ramascan.com/api?module=transaction&action=gettxreceiptstatus&txhash=0x...Responsejson
{
"status": "1",
"message": "OK",
"result": {
"status": "1" // 1 = success, 0 = failed
}
}Get Transaction Info
Requestbash
GET https://www.ramascan.com/api?module=transaction&action=gettxinfo&txhash=0x...Block Endpoints
Get Block Reward
Requestbash
GET https://www.ramascan.com/api?module=block&action=getblockreward&blockno=1234567Get Block Countdown
Requestbash
GET https://www.ramascan.com/api?module=block&action=getblockcountdown&blockno=9999999Token Endpoints
Get Token Info
Requestbash
GET https://www.ramascan.com/api?module=token&action=getToken&contractaddress=0x...Get Token Holders
Requestbash
GET https://www.ramascan.com/api?module=token&action=getTokenHolders&contractaddress=0x...&page=1&offset=100Stats Endpoints
Get Total Supply
Requestbash
GET https://www.ramascan.com/api?module=stats&action=coinsupplyGet RAMA Price
Requestbash
GET https://www.ramascan.com/api?module=stats&action=coinpriceBlockscout v2 API
Blockscout also provides a modern REST API with more endpoints:
Get Address Info
Requestbash
GET https://www.ramascan.com/api/v2/addresses/0x...Get Address Transactions
Requestbash
GET https://www.ramascan.com/api/v2/addresses/0x.../transactionsGet Address Token Balances
Requestbash
GET https://www.ramascan.com/api/v2/addresses/0x.../token-balancesGet Block Info
Requestbash
GET https://www.ramascan.com/api/v2/blocks/1234567Get Transaction Info
Requestbash
GET https://www.ramascan.com/api/v2/transactions/0x...Search
Requestbash
GET https://www.ramascan.com/api/v2/search?q=0x...GraphQL API
For complex queries, use the GraphQL endpoint:
GraphQL Querygraphql
# Endpoint: https://www.ramascan.com/graphiql
query {
address(hash: "0x...") {
hash
fetchedCoinBalance
fetchedCoinBalanceBlockNumber
contractCode
smartContract {
name
compilerVersion
optimization
}
}
transaction(hash: "0x...") {
hash
blockNumber
fromAddressHash
toAddressHash
value
gas
gasPrice
gasUsed
status
}
}JavaScript Examples
Using Fetch APItypescript
const BASE_URL = 'https://www.ramascan.com/api';
// Get balance
async function getBalance(address: string): Promise<string> {
const response = await fetch(
`${BASE_URL}?module=account&action=balance&address=${address}&tag=latest`
);
const data = await response.json();
if (data.status !== '1') {
throw new Error(data.message);
}
return data.result; // Balance in wei
}
// Get transactions
async function getTransactions(address: string, page = 1): Promise<any[]> {
const response = await fetch(
`${BASE_URL}?module=account&action=txlist&address=${address}&sort=desc&page=${page}&offset=25`
);
const data = await response.json();
return data.result || [];
}
// Get contract ABI
async function getContractABI(address: string): Promise<any> {
const response = await fetch(
`${BASE_URL}?module=contract&action=getabi&address=${address}`
);
const data = await response.json();
if (data.status !== '1') {
throw new Error('Contract not verified or ABI not available');
}
return JSON.parse(data.result);
}
// Usage
const balance = await getBalance('0x...');
const txs = await getTransactions('0x...');
const abi = await getContractABI('0x...');Endpoint Summary
| Module | Action | Description |
|---|---|---|
| account | balance | Get single address balance |
| account | balancemulti | Get multiple address balances |
| account | txlist | Get transaction list |
| account | txlistinternal | Get internal transactions |
| account | tokentx | Get ERC20 token transfers |
| account | tokennfttx | Get ERC721 NFT transfers |
| account | tokenbalance | Get token balance for address |
| contract | getabi | Get contract ABI |
| contract | getsourcecode | Get verified source code |
| contract | verifysourcecode | Verify contract |
| transaction | gettxreceiptstatus | Get tx receipt status |
| transaction | gettxinfo | Get transaction details |
| block | getblockreward | Get block reward info |
| block | getblockcountdown | Get countdown to block |
| token | getToken | Get token information |
| token | getTokenHolders | Get token holders |
| stats | coinsupply | Get total RAMA supply |
| stats | coinprice | Get RAMA price |
â
More Resources
- âĸ RamaScan API Documentation
- âĸ Blockscout Documentation
- âĸ GitHub: github.com/ramestta