{
  "openapi": "3.0.1",
  "info": {
    "title": "Japan Tokushoho Scraper - Online Shop Seller Contacts",
    "description": "Turn Japanese online-shop domains into seller leads from each shop's 特定商取引法に基づく表記 page: legal name, responsible person, address, phone, email, 法人番号 and T-number. Reads Rakuten and Yahoo! store pages too; BASE/STORES platform offices are flagged, never billed.",
    "version": "0.1",
    "x-build-id": "aOfjlpIFleZOToXPD"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/scrapersdelight~jp-tokushoho-contact-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-scrapersdelight-jp-tokushoho-contact-scraper",
        "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/scrapersdelight~jp-tokushoho-contact-scraper/runs": {
      "post": {
        "operationId": "runs-sync-scrapersdelight-jp-tokushoho-contact-scraper",
        "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/scrapersdelight~jp-tokushoho-contact-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-scrapersdelight-jp-tokushoho-contact-scraper",
        "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",
        "properties": {
          "domains": {
            "title": "Japanese shop domains (or 特定商取引法 page URLs)",
            "type": "array",
            "description": "One entry per online shop. Accepts a bare domain (\"kinto.co.jp\"), a homepage URL (\"https://www.yoshikawa-k.co.jp/\") or the shop's 特定商取引法に基づく表記 page itself. Any TLD works — Japanese shops trade on .jp, .co.jp, .com, .shop and .tokyo. Each domain returns exactly one row; only rows that name the seller AND carry its address or phone are billed. Leave empty to run a built-in 5-shop demo.",
            "items": {
              "type": "string"
            }
          },
          "startUrls": {
            "title": "Start URLs (list source)",
            "type": "array",
            "description": "The same list handed over as URLs, so Make, Zapier, Clay or a Google Sheet can pass it natively. Merged with the domains above and deduplicated.",
            "items": {
              "type": "object",
              "required": [
                "url"
              ],
              "properties": {
                "url": {
                  "type": "string",
                  "title": "URL of a web page",
                  "format": "uri"
                }
              }
            }
          },
          "maxItems": {
            "title": "Max results (billed rows)",
            "minimum": 0,
            "type": "integer",
            "description": "Hard cap on seller rows DELIVERED AND BILLED this run. Unbilled rows (no disclosure page, platform-proxied, unreachable) never count toward it. 0 = no cap.",
            "default": 1000
          },
          "maxRequestsPerDomain": {
            "title": "Max requests per domain",
            "minimum": 2,
            "maximum": 30,
            "type": "integer",
            "description": "Hard cap on requests spent finding one shop's disclosure, homepage included. The ladder stops at the first page that parses, so most shops use 2–4; a shop with no disclosure page uses the whole cap on free requests.",
            "default": 14
          },
          "perDomainTimeoutSecs": {
            "title": "Per-domain timeout (seconds)",
            "minimum": 15,
            "maximum": 600,
            "type": "integer",
            "description": "Wall-clock deadline for one shop, every request included (no request starts with less than 3 s left). A shop that hits it is reported as unreachable and not billed.",
            "default": 150
          },
          "requestConcurrency": {
            "title": "Request concurrency",
            "minimum": 1,
            "maximum": 30,
            "type": "integer",
            "description": "How many shops are worked in parallel (one request in flight per shop). Lowered automatically when the run's memory is short.",
            "default": 16
          },
          "requestTimeoutSecs": {
            "title": "Request timeout (seconds)",
            "minimum": 5,
            "maximum": 90,
            "type": "integer",
            "description": "Timeout for a single HTTP request.",
            "default": 20
          },
          "includeUnbilledRows": {
            "title": "Include unbilled rows",
            "type": "boolean",
            "description": "Emit a row for every domain that produced no billable seller — platform-proxied micro-shops (with platformProxied: true), shops with no disclosure page, pages printed as images, unreachable hosts — with its status and missReason, so the dataset accounts for every input. These rows are never billed.",
            "default": true
          },
          "includeTermsFields": {
            "title": "Include the statutory terms fields",
            "type": "boolean",
            "description": "Also return the shop's payment methods, extra fees (shipping / COD), delivery time and returns policy as printed on the same page.",
            "default": true
          },
          "useSitemap": {
            "title": "Search the sitemap",
            "type": "boolean",
            "description": "When the footer has no link, read the shop's sitemap (Shopify lists every page handle there, Japanese handles included) for the disclosure page. Two small requests at most.",
            "default": true
          },
          "useWordPressSearch": {
            "title": "Search WordPress pages",
            "type": "boolean",
            "description": "On a WordPress / WooCommerce shop, ask the site's own page index for a 特定商取引 page. One small JSON request.",
            "default": true
          },
          "followWwwVariants": {
            "title": "Try www and apex variants",
            "type": "boolean",
            "description": "If the homepage fails, retry the other host form (www.x.jp to x.jp and back).",
            "default": true
          },
          "followShopLinks": {
            "title": "Follow the link to the shop's own store",
            "type": "boolean",
            "description": "When the domain is a corporate site whose online shop lives on another host (ec.example.co.jp, a Color Me / BASE / STORES shop, a Rakuten or Yahoo!ショッピング store), read the disclosure on that shop. One to three requests.",
            "default": true
          },
          "useDatacenterProxy": {
            "title": "Retry on the Apify datacenter proxy",
            "type": "boolean",
            "description": "The first request to each host goes out directly. On a refusal (403 / 429 / challenge / reset) the host is retried through the Apify datacenter pool — only when the account running the Actor has an Apify datacenter group; otherwise this rung is skipped.",
            "default": true
          },
          "escalateToResidential": {
            "title": "Escalate to Japanese residential IPs on a block",
            "type": "boolean",
            "description": "A host that refused the free rungs is retried on an Apify RESIDENTIAL exit in the country below, reusing one working session per host, at most five pages per shop and inside the per-run budget. Guessed paths never escalate.",
            "default": true
          },
          "escalateToUnblocker": {
            "title": "Last rung: the Apify Unblocker on a block",
            "type": "boolean",
            "description": "A host that refused every earlier rung (direct, datacenter, Japanese residential, each with a Firefox and a Chrome fingerprint) gets one more attempt through the Apify Unblocker, at most three pages per shop. Both paid rungs share one per-run budget tied to the rows billed, so they can never cost more than the run earns.",
            "default": true
          },
          "residentialCountry": {
            "title": "Residential exit country",
            "type": "string",
            "description": "ISO country code for the residential rung. JP by default: several Japanese retailers answer only Japanese IPs.",
            "default": "JP"
          },
          "proxyConfiguration": {
            "title": "Custom proxy",
            "type": "object",
            "description": "Leave as is for the measured default (direct, then datacenter, then residential JP only on a block). Supply your own proxy URLs or an Apify proxy group to route the FIRST attempt through them instead.",
            "default": {
              "useApifyProxy": false
            }
          },
          "maxBodyKb": {
            "title": "Max page size (KB)",
            "minimum": 64,
            "maximum": 8000,
            "type": "integer",
            "description": "Pages are streamed and cut at this size. 1,500 KB keeps every footer seen in testing.",
            "default": 1500
          },
          "saveRawPages": {
            "title": "Save the raw disclosure pages (audit trail)",
            "type": "boolean",
            "description": "Store the exact page each billed or unbilled seller row was parsed from, gzipped, in this run's key-value store (key page_<domain>; the row's rawPageKey names it), so any row can be re-checked against its bytes. Adds storage; off by default.",
            "default": false
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}