Skip to content

Blockchain Indexing Proxy: Fixed Egress for Indexers and Subgraphs

Indexers run for days against the same few endpoints. Give them one fixed exit you can allowlist, monitor and keep.

Why indexers need a fixed proxy

Indexing is long-running traffic bound by plan limits. On Alchemy's free plan a single eth_getLogs request may span only 10 blocks, while paid plans lift the range on Ethereum, Base, Optimism and Arbitrum, and every response is capped at 150 MB. The Graph's Free Plan includes 100,000 queries a month before usage is billed. Those limits belong to your plans — a proxy keeps the route stable.

Long jobs want one address. Alchemy can restrict an API key to allowlisted IPv4 addresses, so a backfill that runs from a static IP keeps working when your office line or cloud instance changes, and nobody else can spend your key.

Know which block you have before you blame the network. The Graph's _meta field returns the latest indexed block, the deployment ID and hasIndexingErrors, so a monitor running through the same exit can tell a lagging or failed subgraph from a connection problem.

Recommended indexing setup

Scroll horizontally with the arrow keys to read all content.

Recommended indexing setup
CriterionChooseWhy
ProductStatic datacenter proxyThe console's fastest exit, priced per IP
BillingPer IP and termCharged per IP and term, not per GB moved through the proxy
How many IPsOne per indexer or environmentSeparate allowlist entries and logs per job
CountryNear your RPC provider or indexer hostNothing is preselected for Web3 — choose before you pay
ProtocolHTTP (preselected) or SOCKS5HTTP CONNECT works with most HTTP clients
IP changesNever during the termAllowlists stay valid for the whole backfill

The “Configure indexing proxies” button opens static datacenter proxies for the Web3 use case, billed per IP and term with HTTP selected. Choose the region, the term and Quantity (up to 100 IPs at a time) before you pay.

Which Proxy302 proxy to buy

Scroll horizontally with the arrow keys to read all content.

Which Proxy302 proxy to buy
CriterionStatic ISPRotating residentialDatacenter
What you getA home-broadband IP fixed to you for the whole termHousehold IPs: a sticky session in the country you pick, or rotation on the Budget lineFixed IPs in data centres — the console's fastest and cheapest option
PricePer IP and term, shown in PTC before you pay (1 PTC = US$1)Per GB: Budget US$1.50, Premium US$5.00, from 1 GBPer IP and term, shown in PTC before you pay
Best for indexingDashboards you keep open in a browser all daySpot checks of public endpoints from several countries; per-GB billing adds up on backfillsIndexers, backfills and subgraph monitors — one fixed IP each

Prices in US dollars; you pay with PTC credit (1 PTC = US$1). Top up your wallet, then buy the line you need. Auto-renew isn't available yet, so renew static IPs in My assets before their term ends.

Set up an indexing proxy in 4 steps

  1. Open the developer setup

    The “Configure indexing proxies” button opens Static Datacenter Proxies with the Web3 use case selected. Under Connection settings pick the Region, choose the Term and keep Protocol at HTTP, set Quantity to the number of IPs you need (one per indexer or environment, up to 100 at a time), then click Review cost and generate.

    Expected result Your configuration lists Per IP and term, Web3, the region and HTTP.

  2. Copy the connection details

    After payment the console opens My assets. Choose View credentials on the new proxy and copy the endpoint (host:port), username and password.

  3. Allowlist the IP and wire it in

    Add the IP to your RPC provider's allowlist. Point the indexer's HTTP client at the proxy: Node.js 24.5+ reads HTTPS_PROXY when NODE_USE_ENV_PROXY=1 is set, and Python's Requests takes proxies on each call.

  4. Watch the indexed block

    Query _meta through the proxy (example below) and alert when the indexed block stops moving or hasIndexingErrors turns true. Check the provider and the subgraph before you suspect the route.

    Expected result The monitor prints a rising block number and hasIndexingErrors false.

Check a subgraph's indexed block through the proxy

Scroll horizontally with the arrow keys to read all content.

# pip install requests
import requests

PROXY = "http://USERNAME:PASSWORD@HOST:PORT"  # static datacenter IP from My assets
PROXIES = {"http": PROXY, "https": PROXY}
QUERY_URL = "YOUR_SUBGRAPH_QUERY_URL"  # from Graph Explorer, includes your API key
QUERY = "{ _meta { block { number timestamp } deployment hasIndexingErrors } }"

r = requests.post(QUERY_URL, json={"query": QUERY}, proxies=PROXIES, timeout=30)
r.raise_for_status()
body = r.json()
if body.get("errors"):
    raise RuntimeError(body["errors"])
meta = body["data"]["_meta"]
print("indexed block:", meta["block"]["number"])
print("deployment:", meta["deployment"], "indexing errors:", meta["hasIndexingErrors"])

Copy the query URL from Graph Explorer — it carries your API key — and POST the query through the proxy. Alert when the indexed block stops moving or hasIndexingErrors turns true.

Quick fixes

eth_getLogs fails on a wide block range

Check Which plan is the key on, and how many blocks does each request span?

Fix Split the range into smaller parts or move the key to a plan with a wider range; the proxy doesn't change this limit.

The provider rejects the key from the indexer

Check Is the proxy's exit IP on the key's allowlist?

Fix Add the exact IPv4 address and wait a few minutes for the change to apply.

The subgraph query returns 405

Check Are you sending the query with GET?

Fix Send it with POST and a JSON body, as in the example; The Graph documents 405 for GET on query URLs.

Blockchain indexing proxy FAQ

Does a proxy give my indexer more RPC quota?

No. Block ranges and throughput come with your provider plan — on Alchemy's free plan eth_getLogs spans only 10 blocks per request. The proxy keeps one stable, allowlisted route.

Datacenter or residential for indexing?

Datacenter. Indexers call APIs with keys, so they don't need a household IP; a static datacenter IP is the console's fastest option and is billed per IP and term instead of per GB.

How many queries does The Graph's free plan include?

100,000 a month in Subgraph Studio; beyond that, queries are billed under the Growth Plan.

Is scraping explorer pages a good way to index?

No. Index from RPC nodes, subgraphs or official APIs with your own keys. Explorers such as Etherscan forbid scraping their websites in their terms.

Can several indexers share one IP?

Yes, if they run under the same team and the provider's limits allow it. Give production its own IP so test jobs never use up the production allowlist or quota.

Sources and verification

8
  1. Alchemy documentation: eth_getLogs

    Official documentation · Checked:

    Lists block-range limits per plan: 10 blocks on the Free plan on all listed chains; unlimited on Pay As You Go and Enterprise for Ethereum, Base, Optimism, Arbitrum, Polygon and several others; all responses capped at 150 MB; suggests splitting large queries.

  2. The Graph documentation: Subgraph Studio billing

    Official documentation · Checked:

    The Free Plan includes 100,000 free monthly queries; queries beyond that are billed under the Growth Plan, payable by card or GRT on Arbitrum or Ethereum.

  3. The Graph documentation: GraphQL API, subgraph metadata

    Official documentation · Checked:

    The _meta field returns the latest indexed block (number, hash, timestamp), the deployment (IPFS CID of subgraph.yaml) and hasIndexingErrors.

  4. The Graph documentation: querying a subgraph

    Official documentation · Checked:

    Each published subgraph has a unique query URL in Graph Explorer, each query URL requires a valid API key, and a 405 on GET means you should switch to POST.

  5. Alchemy documentation: allowlists

    Official documentation · Checked:

    An IP allowlist lets you specify IPv4 addresses from which requests can be made using your API key, blocking all others; it is set on the app's Security tab and updates may take a few minutes to propagate.

  6. Requests documentation: proxies

    Official documentation · Checked:

    Pass proxies on each request to make sure environment proxies don't override them; proxy credentials use the http://user:password@host/ form.

  7. Proxy302 static datacenter configuration for Web3

    Product observation · Checked:

    Read in the console source on 2026-10-18: for the Web3 use case the static datacenter page bills Per IP and term, offers HTTP or SOCKS5 with HTTP preselected, leaves Region unselected, shows Auto-renew IP as Not yet available and states that static IPs never rotate. Its Web3 note reads “Development and tools: Per IP · HTTP CONNECT by default · 1 fixed exit · adjustable protocol and term”. Since 19 October 2026 the Quantity field takes 1 to 100, and the console buys and charges the IPs one by one.

  8. Proxy302 pricing

    Product observation · Checked:

    Budget rotating residential US$1.50 per GB and Premium US$5.00 per GB, both from 1 GB; account credit in PTC at 1 PTC = US$1.00; static ISP and datacenter leases depend on region, quantity and term and are shown before you pay — as published on the pricing page (checked against the production catalogue on 2026-10-09).

Ready to connect?

Create an account, top up once and pick rotating residential, static ISP or datacenter. Rotating residential exits cover 195+ countries and regions.