{
  "openapi": "3.0.1",
  "info": {
    "title": "Gurunavi Japan Restaurant Scraper",
    "description": "Scrape Gurunavi (ぐるなび / 楽天ぐるなび) restaurant data by area and genre in all 47 Japanese prefectures: names, budgets, station access, photos and a featured course plan with price. Turn on detail pages for phone numbers, addresses, GPS, opening hours and payment methods. Export leads to CSV or Excel.",
    "version": "0.0",
    "x-build-id": "vDpGGn6kcaUf6prpl"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/piquno~gurunavi-japan-restaurant-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-piquno-gurunavi-japan-restaurant-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/piquno~gurunavi-japan-restaurant-scraper/runs": {
      "post": {
        "operationId": "runs-sync-piquno-gurunavi-japan-restaurant-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/piquno~gurunavi-japan-restaurant-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-piquno-gurunavi-japan-restaurant-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",
        "required": [
          "prefecture"
        ],
        "properties": {
          "prefecture": {
            "title": "Prefecture",
            "enum": [
              "hokkaido",
              "aomori",
              "iwate",
              "miyagi",
              "akita",
              "yamagata",
              "fukushima",
              "ibaraki",
              "tochigi",
              "gunma",
              "saitama",
              "chiba",
              "tokyo",
              "kanagawa",
              "niigata",
              "toyama",
              "ishikawa",
              "fukui",
              "yamanashi",
              "nagano",
              "gifu",
              "shizuoka",
              "aichi",
              "mie",
              "shiga",
              "kyoto",
              "osaka",
              "hyogo",
              "nara",
              "wakayama",
              "tottori",
              "shimane",
              "okayama",
              "hiroshima",
              "yamaguchi",
              "tokushima",
              "kagawa",
              "ehime",
              "kochi",
              "fukuoka",
              "saga",
              "nagasaki",
              "kumamoto",
              "oita",
              "miyazaki",
              "kagoshima",
              "okinawa"
            ],
            "type": "string",
            "description": "Which prefecture to crawl. Ignored when Start URLs are given.",
            "default": "tokyo"
          },
          "area": {
            "title": "Sub-area filter",
            "type": "string",
            "description": "Optional. Restrict to one Gurunavi sub-area inside the prefecture, by Japanese name (e.g. 新宿, 梅田, 博多) or by area code (e.g. areal2115). Partial name matches are fine."
          },
          "genre": {
            "title": "Genre",
            "enum": [
              "",
              "izakaya",
              "japanese",
              "sushi",
              "roastmeat",
              "western",
              "buffet",
              "curry",
              "chinese",
              "continental",
              "hotpots",
              "ethnic",
              "noodle",
              "beerandcuisine",
              "cafe",
              "entertainment",
              "casual",
              "others"
            ],
            "type": "string",
            "description": "Optional. Restrict to one cuisine genre.",
            "default": ""
          },
          "crawlMode": {
            "title": "Crawl mode",
            "enum": [
              "subareas",
              "prefecture",
              "subareas-genres"
            ],
            "type": "string",
            "description": "How to split the prefecture into searches. Gurunavi caps any single search at about 10,000 results, so splitting by sub-area (and genre) is how you reach every restaurant in a big prefecture.",
            "default": "subareas"
          },
          "startUrls": {
            "title": "Start URLs",
            "type": "array",
            "description": "Optional. Your own Gurunavi search-result URLs (any https://r.gnavi.co.jp/area/.../rs/ page, filters allowed). Each is paginated automatically. Overrides prefecture/area/genre.",
            "items": {
              "type": "object",
              "required": [
                "url"
              ],
              "properties": {
                "url": {
                  "type": "string",
                  "title": "URL of a web page",
                  "format": "uri"
                }
              }
            }
          },
          "maxResults": {
            "title": "Max restaurants",
            "minimum": 1,
            "type": "integer",
            "description": "Stop after this many unique restaurants. Each restaurant is one dataset item and one billable result.",
            "default": 100
          },
          "includeDetails": {
            "title": "Scrape detail pages",
            "type": "boolean",
            "description": "Also open every restaurant's page for address, coordinates, phone, hours, closed days, seating, private rooms, smoking, payment methods and more. One extra request per restaurant.",
            "default": false
          },
          "requestDelaySecs": {
            "title": "Delay between requests (s)",
            "minimum": 0,
            "maximum": 30,
            "type": "number",
            "description": "Pause after each successful request. 1 second is polite; go lower only with a residential proxy.",
            "default": 1
          },
          "maxConcurrency": {
            "title": "Max concurrency",
            "minimum": 1,
            "maximum": 10,
            "type": "integer",
            "description": "Parallel requests. 3 is a safe default.",
            "default": 3
          },
          "proxyConfiguration": {
            "title": "Proxy",
            "type": "object",
            "description": "Residential proxies with country Japan (the default). Gurunavi only serves IPs in Japan and answers HTTP 503 to others, Apify datacenter proxies included. If the proxy you pick is blocked, the run switches to Residential (Japan) by itself.",
            "default": {
              "useApifyProxy": true,
              "apifyProxyGroups": [
                "RESIDENTIAL"
              ],
              "apifyProxyCountry": "JP"
            }
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}