{
  "openapi": "3.0.1",
  "info": {
    "title": "EVM Wallet Scraper — Balances, Tokens, Transactions, Risk Flags",
    "description": "Wallet & contract intelligence for Ethereum, Base, Arbitrum, Optimism, Polygon, Gnosis, ZKsync, Scroll and more: balances, ERC-20 holdings with USD value (spam filtered), recent transactions with counterparties, token transfers, internal txs, NFTs, balance history, risk flags. ENS names accepted.",
    "version": "0.1",
    "x-build-id": "aTR75hXOqMN6QDPtM"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/yadroo~wallet-intel/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-yadroo-wallet-intel",
        "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~wallet-intel/runs": {
      "post": {
        "operationId": "runs-sync-yadroo-wallet-intel",
        "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~wallet-intel/run-sync": {
      "post": {
        "operationId": "run-sync-yadroo-wallet-intel",
        "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": [
          "addresses"
        ],
        "properties": {
          "addresses": {
            "title": "Addresses or ENS names",
            "type": "array",
            "description": "EVM addresses (0x…40 hex) or ENS names (vitalik.eth). Each address is analysed and charged once: repeats, an ENS name together with its 0x address, or the same address in another letter case are skipped and listed in SUMMARY.duplicates. Invalid values, unknown addresses and ENS names that resolve to nothing are not dataset items and are not charged; they are listed in SUMMARY (errors, notFound).",
            "items": {
              "type": "string"
            }
          },
          "chain": {
            "title": "Chain",
            "enum": [
              "base",
              "ethereum",
              "arbitrum",
              "optimism",
              "polygon",
              "gnosis",
              "zksync",
              "scroll",
              "celo",
              "unichain",
              "soneium",
              "mode",
              "ink",
              "worldchain",
              "sepolia",
              "base-sepolia"
            ],
            "type": "string",
            "description": "Blockscout-hosted chain to query, one key from the list (README → Reference → Chains). The platform refuses any other value (for example eth or mainnet) before the run starts.",
            "default": "base"
          },
          "recentTxLimit": {
            "title": "Recent transactions",
            "minimum": 0,
            "maximum": 200,
            "type": "integer",
            "description": "How many most recent transactions to include per address (0 = skip). Up to 200 (4 pages).",
            "default": 10
          },
          "txDirection": {
            "title": "Direction",
            "enum": [
              "all",
              "from",
              "to"
            ],
            "type": "string",
            "description": "`all` = both directions; `from` = only transactions signed by the address (outgoing); `to` = only incoming.",
            "default": "all"
          },
          "sinceDate": {
            "title": "Since date",
            "pattern": "^(\\d{4}-\\d{2}-\\d{2}([T ]\\d{2}:\\d{2}(:\\d{2}(\\.\\d+)?)?(Z|[+-]\\d{2}:?\\d{2})?)?)?$",
            "type": "string",
            "description": "Keep only transactions / token transfers / internal txs on or after this date (YYYY-MM-DD or ISO 8601; UTC when no zone is given). Paging stops when older items are reached, which keeps runs cheap."
          },
          "untilDate": {
            "title": "Until date",
            "pattern": "^(\\d{4}-\\d{2}-\\d{2}([T ]\\d{2}:\\d{2}(:\\d{2}(\\.\\d+)?)?(Z|[+-]\\d{2}:?\\d{2})?)?)?$",
            "type": "string",
            "description": "Keep only items on or before this date (YYYY-MM-DD = the whole day, or ISO 8601; UTC when no zone is given). The explorer lists newest first and the actor reads at most limit / 50 + 2 pages, so on a busy wallet an untilDate far in the past can leave the window unreached; the item's `warnings` then say so."
          },
          "includeTokens": {
            "title": "Include token balances",
            "type": "boolean",
            "description": "Include ERC-20 token balances sorted by USD value.",
            "default": true
          },
          "tokensLimit": {
            "title": "Max tokens",
            "minimum": 1,
            "maximum": 500,
            "type": "integer",
            "description": "Maximum number of tokens to keep per address (after spam/min-USD filtering). `tokenCount` still reports the full number held.",
            "default": 50
          },
          "minTokenUsd": {
            "title": "Min token value (USD)",
            "minimum": 0,
            "type": "number",
            "description": "Drop token positions worth less than this (0 = keep everything, including unpriced tokens).",
            "default": 0
          },
          "hideSpamTokens": {
            "title": "Hide spam tokens",
            "type": "boolean",
            "description": "Drop tokens the explorer flags as scams and unpriced tokens whose name/symbol looks like an airdrop lure (URLs, 'claim', 'visit', 'reward'…). Count of removed tokens is reported as `spamTokenCount`.",
            "default": true
          },
          "includeTokenTransfers": {
            "title": "Include token transfers",
            "type": "boolean",
            "description": "Include recent ERC-20/721/1155 transfers with direction, counterparty and USD value. Combine with `tokenFilter` to answer questions like 'did this wallet receive USDC in the last week?'.",
            "default": false
          },
          "tokenTransfersLimit": {
            "title": "Max token transfers",
            "minimum": 0,
            "maximum": 200,
            "type": "integer",
            "description": "Maximum token transfers per address (0–200).",
            "default": 25
          },
          "tokenTransferType": {
            "title": "Token transfer type",
            "enum": [
              "all",
              "ERC-20",
              "ERC-721",
              "ERC-1155"
            ],
            "type": "string",
            "description": "Restrict token transfers to one standard.",
            "default": "all"
          },
          "tokenFilter": {
            "title": "Only these token contracts",
            "type": "array",
            "description": "Token contract addresses (0x…) to keep in `tokenTransfers`. E.g. USDC on Base: 0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913. Empty = all tokens.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "includeInternalTransactions": {
            "title": "Include internal transactions",
            "type": "boolean",
            "description": "Include value-carrying internal calls (contract → address ETH transfers, e.g. DEX payouts, bridge deliveries).",
            "default": false
          },
          "internalTxLimit": {
            "title": "Max internal transactions",
            "minimum": 0,
            "maximum": 200,
            "type": "integer",
            "description": "Maximum internal transactions per address (0–200).",
            "default": 25
          },
          "includeNfts": {
            "title": "Include NFT collections",
            "type": "boolean",
            "description": "Include the list of ERC-721/1155 collections the address holds (first page, up to 50 collections) with counts and a sample image.",
            "default": false
          },
          "includeBalanceHistory": {
            "title": "Include balance history",
            "type": "boolean",
            "description": "Include the daily native-coin balance series for the last ~90 days (only days where the balance changed).",
            "default": false
          },
          "counterpartiesLimit": {
            "title": "Top counterparties",
            "minimum": 0,
            "maximum": 50,
            "type": "integer",
            "description": "How many counterparties (ranked by number of interactions in the fetched transactions) to include in `topCounterparties`. 0 = skip.",
            "default": 10
          },
          "fields": {
            "title": "Only these output fields",
            "type": "array",
            "description": "Keep only these top-level fields, in this order (address, chain, found and fetchedAt are always kept). Letter case and snake_case do not matter. Unknown names are left out with a note in the status message and SUMMARY.notes; a list without any output field fails the run with the list of valid names. Empty = full item. Example: [\"nativeBalance\",\"totalPortfolioUsd\",\"flags\"].",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "requestDelayMs": {
            "title": "Delay between requests (ms)",
            "minimum": 0,
            "maximum": 5000,
            "type": "integer",
            "description": "Minimum gap between two requests to the explorer, however many lookups one address needs (at most 2 run at once). Values below 200 are raised to 200: Blockscout allows 300 requests per minute per IP. Raise it if a run stops on HTTP 429.",
            "default": 200
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}