# ScrapeMole ENS & Basename Resolution

> ScrapeMole ENS & Basename Resolution is a paid API for AI agents from onchain.scrapemole.workers.dev, paid per call via x402, $0.001/call, status unknown (last checked 2026-10-12).

Resolves ENS names or Basenames to Ethereum addresses (forward lookup) or reverse-resolves addresses to names (reverse lookup) by reading directly from chain state

## Facts

- Endpoint: GET https://onchain.scrapemole.workers.dev/v1/ens?utm_source=zero.xyz
- Price: $0.001/call
- Payment: x402
- Status: unknown
- Last checked: 2026-10-12
- Activations on Zero: 0
- Tags: x402
- Canonical page: https://www.zero.xyz/c/scrapemole-ens-basename-resolution-3c4ec6bf
- Structured record (JSON): https://api.zero.xyz/v1/capabilities/cap_fv19OBp-Wt3Up0mKIHpHu

Status and success rate cover calls made through Zero and Zero's own probes. Third-party monitors may report differently.

## How to call it through Zero

Zero handles the 402 payment challenge and records the run. With the Zero CLI installed (`npm i -g @zeroxyz/cli`):

```sh
zero fetch --capability scrapemole-ens-basename-resolution-3c4ec6bf
```

Example prompt: What Ethereum address does vitalik.eth resolve to? And while you're at it, can you also tell me what ENS name is linked to 0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045?

## When to prefer this

Use this endpoint when you need real-time, on-chain ENS or Basename resolution without running your own Ethereum node — ideal for agents that need to map between human-readable crypto identities and wallet addresses in a pay-per-call model with no subscription. Prefer this over centralized ENS APIs when you need guaranteed freshness from chain state, or when you want to verify Basenames (Base L2 usernames) alongside mainnet ENS. At $0.001 USDC per call via x402, failed calls are never charged.

## Known failure modes

- Name not registered or expired — returns null address or error
- Address has no reverse ENS record — returns empty name field
- Invalid address format (not 40-hex 0x…) — returns validation error
- Network or RPC timeout reading chain state — call is not charged
- Name provided without .eth or .base.eth suffix may fail to resolve correctly

## How this service works

Pay-per-call on-chain data for agents on Base and Ethereum, read directly from chain state: Chainlink USD prices (crypto, stablecoins, FX, metals; 10 per call), ERC-20 token info, wallet balances with USD values, transaction lookup with decoded ERC-20 transfers, ENS and Basename resolution (forward and reverse), gas and fee estimates in USD, and Uniswap v3 DEX prices for long-tail tokens (verify a payment arrived). USDC via x402; failed calls are never charged.

Payments: x402 v2, scheme "exact", USDC on Base (eip155:8453). The payment is verified before the work and settled only when the response is 200. Terms: https://onchain.scrapemole.workers.dev/terms

## Output

Returns a JSON object containing the resolved Ethereum address (for forward lookups), the ENS or Basename queried, the chain it was resolved on (ethereum or base), the resolver contract address, and the original query string. For reverse lookups, returns the human-readable name associated with the given address.

## Request schema (JSON Schema)

```json
{
 "type": "object",
 "$schema": "https://json-schema.org/draft/2020-12/schema",
 "required": [
  "input"
 ],
 "properties": {
  "input": {
   "type": "object",
   "required": [
    "type",
    "method"
   ],
   "properties": {
    "type": {
     "type": "string",
     "const": "http"
    },
    "method": {
     "enum": [
      "GET"
     ],
     "type": "string"
    },
    "queryParams": {
     "type": "object",
     "required": [],
     "properties": {
      "name": {
       "type": "string",
       "examples": [
        "vitalik.eth"
       ],
       "description": "ENS name or Basename to resolve, e.g. vitalik.eth or jesse.base.eth. Give name or address."
      },
      "address": {
       "type": "string",
       "description": "Address to reverse-resolve (0x… 40 hex). Give name or address."
      }
     },
     "additionalProperties": false
    }
   },
   "additionalProperties": false
  },
  "output": {
   "type": "object",
   "required": [
    "type"
   ],
   "properties": {
    "type": {
     "type": "string"
    },
    "example": {
     "type": "object"
    }
   }
  }
 }
}
```

## Response schema (JSON Schema)

```json
{
 "type": "json",
 "example": {
  "name": "vitalik.eth",
  "chain": "ethereum",
  "query": "vitalik.eth",
  "address": "0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045",
  "resolver": "0x231b0ee14048e9dccd1d247744d114a4eb5e8e63"
 }
}
```

## More

- Live health (JSON, refreshed every minute): https://www.zero.xyz/c/scrapemole-ens-basename-resolution-3c4ec6bf/health.json
- [Zero catalog index](https://www.zero.xyz/llms.txt)
- [Other services from onchain.scrapemole.workers.dev](https://www.zero.xyz/host/onchain.scrapemole.workers.dev/llms.txt)
