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.
Indexers run for days against the same few endpoints. Give them one fixed exit you can allowlist, monitor and keep.
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.
Scroll horizontally with the arrow keys to read all content.
| Criterion | Choose | Why |
|---|---|---|
| Product | Static datacenter proxy | The console's fastest exit, priced per IP |
| Billing | Per IP and term | Charged per IP and term, not per GB moved through the proxy |
| How many IPs | One per indexer or environment | Separate allowlist entries and logs per job |
| Country | Near your RPC provider or indexer host | Nothing is preselected for Web3 — choose before you pay |
| Protocol | HTTP (preselected) or SOCKS5 | HTTP CONNECT works with most HTTP clients |
| IP changes | Never during the term | Allowlists 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.
Scroll horizontally with the arrow keys to read all content.
| Criterion | Static ISP | Rotating residential | Datacenter |
|---|---|---|---|
| What you get | A home-broadband IP fixed to you for the whole term | Household IPs: a sticky session in the country you pick, or rotation on the Budget line | Fixed IPs in data centres — the console's fastest and cheapest option |
| Price | Per 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 GB | Per IP and term, shown in PTC before you pay |
| Best for indexing | Dashboards you keep open in a browser all day | Spot checks of public endpoints from several countries; per-GB billing adds up on backfills | Indexers, 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.
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.
After payment the console opens My assets. Choose View credentials on the new proxy and copy the endpoint (host:port), username and password.
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.
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.
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.
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.
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.
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.
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. 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.
100,000 a month in Subgraph Studio; beyond that, queries are billed under the Growth Plan.
No. Index from RPC nodes, subgraphs or official APIs with your own keys. Explorers such as Etherscan forbid scraping their websites in their terms.
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.
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.
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.
Official documentation · Checked:
The _meta field returns the latest indexed block (number, hash, timestamp), the deployment (IPFS CID of subgraph.yaml) and hasIndexingErrors.
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.
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.
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.
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.
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).
Create an account, top up once and pick rotating residential, static ISP or datacenter. Rotating residential exits cover 195+ countries and regions.