{
  "openapi": "3.0.1",
  "info": {
    "title": "ENS Resolver — Name to Address, Reverse Lookup, Avatar",
    "description": "Resolve Ethereum Name Service names to addresses and addresses to primary ENS names, with avatar, text records (email, url, twitter, github, description) and content hash. Bulk. Built for agent identity checks. No API key.",
    "version": "0.1",
    "x-build-id": "fo2OdLLR3UDJWVQdR"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/yadroo~ens-resolver/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-yadroo-ens-resolver",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/acts/yadroo~ens-resolver/runs": {
      "post": {
        "operationId": "runs-sync-yadroo-ens-resolver",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor and returns information about the initiated run in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/runsResponseSchema"
                }
              }
            }
          }
        }
      }
    },
    "/acts/yadroo~ens-resolver/run-sync": {
      "post": {
        "operationId": "run-sync-yadroo-ens-resolver",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    }
  },
  "components": {
    "schemas": {
      "inputSchema": {
        "type": "object",
        "required": [
          "queries"
        ],
        "properties": {
          "mode": {
            "title": "Mode",
            "enum": [
              "resolve",
              "ownedBy",
              "search"
            ],
            "type": "string",
            "description": "`resolve` = names → addresses and addresses → primary names, with profile records, multi-chain addresses, registration/expiry (one item per query). `ownedBy` = list every ENS name owned by / resolving to each address (one item per name). `search` = look a name up in the ENS index by its label: `uniswap` finds uniswap.eth — an exact lookup under every TLD the index knows, not a prefix or keyword search (one item per registered name). Apify refuses any other value before the run starts.",
            "default": "resolve"
          },
          "queries": {
            "title": "ENS names or addresses",
            "type": "array",
            "description": "For `resolve`: ENS names (vitalik.eth, sub.name.eth, offchain names like name.cb.id / name.base.eth) and/or 0x addresses. For `ownedBy`: 0x addresses. For `search`: a label or full name (e.g. \"uniswap\", \"app.uniswap.eth\"). Duplicates are looked up once, compared after ENS normalisation (`Vitalik.ETH` = `vitalik.eth`; addresses in any letter case). The default 15-minute run resolves about 400–600 names; the rest is listed in SUMMARY.notProcessed (see README → Limits).",
            "items": {
              "type": "string"
            }
          },
          "textRecords": {
            "title": "Text records",
            "type": "array",
            "description": "Text-record keys to read. Shortcuts: `*standard` (ENSIP-5 global keys: avatar, description, display, email, keywords, mail, notice, location, phone, url, header, name), `*services` (com.twitter, com.github, com.discord, org.telegram, com.reddit, com.linkedin, com.youtube, io.keybase, com.farcaster, xyz.lens…), `*all`. An unknown `*shortcut` fails the run with a suggestion. Empty = avatar, url, email, com.twitter, com.github, description.",
            "items": {
              "type": "string"
            }
          },
          "coinTypes": {
            "title": "Multi-chain addresses",
            "type": "array",
            "description": "Additional address records to read (ENSIP-9/11). Keys (any letter case): btc, ltc, doge, eth, atom, xrp, trx, sol, bnb, dot, optimism, bsc, gnosis, polygon, zksync, base, arbitrum, avalanche, linea, scroll — or a numeric SLIP-44 coin type. An unknown key fails the run with the list of valid keys. Empty = none (the ETH address is always returned in `address`).",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "includeRegistration": {
            "title": "Include registration & expiry",
            "type": "boolean",
            "description": "Owner, registrant, wrapped owner, registration date, expiry date, days to expiry, grace-period status, resolver, NFT token id (from the Blockscout ENS index).",
            "default": true
          },
          "includeContenthash": {
            "title": "Include contenthash",
            "type": "boolean",
            "description": "IPFS/IPNS/Arweave/Swarm content hash of the name (decentralised website), read from the name's resolver and returned as a URI (ipfs://…, ipns://…, bzz://…, ar://…).",
            "default": true
          },
          "verifyReverse": {
            "title": "Verify reverse record",
            "type": "boolean",
            "description": "For name queries, also check that the resolved address has this name as its primary (reverse) name → `isPrimaryName`, flags `reverse_record_mismatch` / `no_reverse_record`. Important for identity checks: anyone can point a name at any address, only the address owner can set the reverse record.",
            "default": true
          },
          "includeEvents": {
            "title": "Include on-chain events",
            "type": "boolean",
            "description": "Recent ENS events for the name (registration, renewals, transfers, record updates) with tx hashes.",
            "default": false
          },
          "eventsLimit": {
            "title": "Max events",
            "minimum": 1,
            "maximum": 100,
            "type": "integer",
            "description": "Maximum events per name (mode=resolve with includeEvents).",
            "default": 20
          },
          "expiresWithinDays": {
            "title": "Expiry alert window (days)",
            "minimum": 0,
            "maximum": 3650,
            "type": "integer",
            "description": "Adds flag `expires_within_<N>d` when the name expires within this many days.",
            "default": 30
          },
          "lookupOwnedBy": {
            "title": "Include names owned by the address",
            "type": "boolean",
            "description": "mode=ownedBy: include names whose owner (or wrapped owner) is the address.",
            "default": true
          },
          "lookupResolvedTo": {
            "title": "Include names resolving to the address",
            "type": "boolean",
            "description": "mode=ownedBy: include names whose ETH address record points to the address.",
            "default": true
          },
          "onlyActive": {
            "title": "Only active (non-expired) names",
            "type": "boolean",
            "description": "mode=ownedBy / search: skip expired names.",
            "default": true
          },
          "maxNamesPerQuery": {
            "title": "Max names per query",
            "minimum": 1,
            "maximum": 500,
            "type": "integer",
            "description": "Cap on names returned per address (ownedBy) or label (search); each name is one dataset item. The ENS index is read 100 names per page, page after page up to this cap.",
            "default": 50
          },
          "fields": {
            "title": "Only these output fields",
            "type": "array",
            "description": "Keep only these top-level fields, in this order (query, name, address, found, fetchedAt are always kept and come first unless you list them). Letter case is forgiven; an unknown name fails the run with a suggestion; a field only the other mode's rows have is left out with a note.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "rpcUrls": {
            "title": "Custom Ethereum RPC URLs (optional, secret)",
            "type": "array",
            "description": "Your own mainnet JSON-RPC endpoints as a JSON array, e.g. [\"https://mainnet.example/v2/<key>\"], tried before the built-in public ones. Stored encrypted (secret input) because such URLs usually carry a provider key; never shown in logs or SUMMARY. Useful for large batches (public nodes rate-limit)."
          }
        }
      },
      "runsResponseSchema": {
        "type": "object",
        "properties": {
          "data": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string"
              },
              "actId": {
                "type": "string"
              },
              "userId": {
                "type": "string"
              },
              "startedAt": {
                "type": "string",
                "format": "date-time",
                "example": "2025-01-08T00:00:00.000Z"
              },
              "finishedAt": {
                "type": "string",
                "format": "date-time",
                "example": "2025-01-08T00:00:00.000Z"
              },
              "status": {
                "type": "string",
                "example": "READY"
              },
              "meta": {
                "type": "object",
                "properties": {
                  "origin": {
                    "type": "string",
                    "example": "API"
                  },
                  "userAgent": {
                    "type": "string"
                  }
                }
              },
              "stats": {
                "type": "object",
                "properties": {
                  "inputBodyLen": {
                    "type": "integer",
                    "example": 2000
                  },
                  "rebootCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "restartCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "resurrectCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "computeUnits": {
                    "type": "integer",
                    "example": 0
                  }
                }
              },
              "options": {
                "type": "object",
                "properties": {
                  "build": {
                    "type": "string",
                    "example": "latest"
                  },
                  "timeoutSecs": {
                    "type": "integer",
                    "example": 300
                  },
                  "memoryMbytes": {
                    "type": "integer",
                    "example": 1024
                  },
                  "diskMbytes": {
                    "type": "integer",
                    "example": 2048
                  }
                }
              },
              "buildId": {
                "type": "string"
              },
              "defaultKeyValueStoreId": {
                "type": "string"
              },
              "defaultDatasetId": {
                "type": "string"
              },
              "defaultRequestQueueId": {
                "type": "string"
              },
              "buildNumber": {
                "type": "string",
                "example": "1.0.0"
              },
              "containerUrl": {
                "type": "string"
              },
              "usage": {
                "type": "object",
                "properties": {
                  "ACTOR_COMPUTE_UNITS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_WRITES": {
                    "type": "integer",
                    "example": 1
                  },
                  "KEY_VALUE_STORE_LISTS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_INTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_EXTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_SERPS": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_UNBLOCKER_UNITS": {
                    "type": "integer",
                    "example": 0
                  }
                }
              },
              "usageTotalUsd": {
                "type": "number",
                "example": 0.00005
              },
              "usageUsd": {
                "type": "object",
                "properties": {
                  "ACTOR_COMPUTE_UNITS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_WRITES": {
                    "type": "number",
                    "example": 0.00005
                  },
                  "KEY_VALUE_STORE_LISTS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_INTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_EXTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_SERPS": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_UNBLOCKER_UNITS": {
                    "type": "integer",
                    "example": 0
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}