{
  "openapi": "3.0.1",
  "info": {
    "title": "Ja.is Scraper",
    "description": "Scrape Ja.is, Iceland's national business and phone directory. Search by name or keyword, browse by business category or town, or fetch specific listing URLs directly. Returns names, addresses, phone numbers, websites, GPS coordinates, and Icelandic national IDs (kennitala).",
    "version": "1.0",
    "x-build-id": "7PgRv6UNa3AQqK7hP"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/crawlerbros~ja-is-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-crawlerbros-ja-is-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/crawlerbros~ja-is-scraper/runs": {
      "post": {
        "operationId": "runs-sync-crawlerbros-ja-is-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/crawlerbros~ja-is-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-crawlerbros-ja-is-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": [
          "mode"
        ],
        "properties": {
          "mode": {
            "title": "Mode",
            "enum": [
              "search",
              "byCategory",
              "byCity",
              "byUrl"
            ],
            "type": "string",
            "description": "What to fetch.",
            "default": "search"
          },
          "searchQuery": {
            "title": "Search query (mode=search / byCity)",
            "type": "string",
            "description": "Free-text search — matches names, addresses, occupations, and categories. Supports Icelandic characters (þ, ð, æ, ö, á, é, í, ó, ú, ý). Example: `bakari`, `Jón Jónsson`, `Kringlan`.",
            "default": "bakarí"
          },
          "category": {
            "title": "Business category (mode=byCategory)",
            "enum": [
              "bakarí",
              "kaffihús",
              "veitingastaður",
              "skyndibitastaður",
              "ísbúð",
              "hótel",
              "gistiheimili",
              "ferðaskrifstofa",
              "lögfræðingur",
              "lögmannsstofa",
              "endurskoðandi",
              "fasteignasala",
              "tryggingafélag",
              "banki",
              "tannlæknir",
              "læknir",
              "dýralæknir",
              "sjúkraþjálfun",
              "sálfræðingur",
              "apótek",
              "hárgreiðslustofa",
              "snyrtistofa",
              "naglastofa",
              "líkamsræktarstöð",
              "bifreiðaverkstæði",
              "dekkjaverkstæði",
              "bílaleiga",
              "bílasala",
              "leigubílastöð",
              "rafvirki",
              "pípulagningamaður",
              "málari",
              "smiður",
              "byggingaverktaki",
              "arkitekt",
              "verkfræðistofa",
              "tölvuþjónusta",
              "hönnun",
              "ljósmyndari",
              "verslun",
              "fataverslun",
              "skóverslun",
              "bókabúð",
              "blómabúð",
              "gæludýraverslun",
              "húsgagnaverslun",
              "raftækjaverslun",
              "byggingavöruverslun",
              "flutningafyrirtæki",
              "ræstingaþjónusta",
              "garðyrkja",
              "leikskóli"
            ],
            "type": "string",
            "description": "A business category / trade to browse. Combine with City to narrow to one town."
          },
          "city": {
            "title": "City / town",
            "enum": [
              "",
              "Reykjavík",
              "Kópavogur",
              "Hafnarfjörður",
              "Akureyri",
              "Reykjanesbær",
              "Garðabær",
              "Mosfellsbær",
              "Selfoss",
              "Akranes",
              "Ísafjörður",
              "Vestmannaeyjar",
              "Keflavík",
              "Egilsstaðir",
              "Borgarnes",
              "Húsavík",
              "Sauðárkrókur",
              "Seltjarnarnes",
              "Þorlákshöfn",
              "Grindavík",
              "Hveragerði",
              "Dalvík",
              "Bolungarvík",
              "Stykkishólmur",
              "Vopnafjörður",
              "Höfn",
              "Blönduós",
              "Siglufjörður",
              "Hvolsvöllur",
              "Hella",
              "Neskaupstaður",
              "Eskifjörður",
              "Reyðarfjörður"
            ],
            "type": "string",
            "description": "Restrict results to one Icelandic town or municipality. Usable with any mode (mode=byCity requires it; search/byCategory treat it as an optional narrower).",
            "default": ""
          },
          "urls": {
            "title": "Ja.is listing URLs (mode=byUrl)",
            "type": "array",
            "description": "Direct Ja.is business or person page URLs, e.g. `https://ja.is/myllan-bakari/` or `https://ja.is/e/eZZdk/`.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "searchScope": {
            "title": "Result type",
            "enum": [
              "all",
              "people",
              "businesses"
            ],
            "type": "string",
            "description": "Which listing types to include (mode=search / byCategory / byCity).",
            "default": "all"
          },
          "fetchDetails": {
            "title": "Fetch full details (phone, website, coordinates)",
            "type": "boolean",
            "description": "Visit each listing's detail page to add phone number, website, GPS coordinates, and national ID (kennitala). Slower but far more complete. Turn off for a faster, lighter scrape.",
            "default": true
          },
          "hasPhone": {
            "title": "Only listings with a phone number",
            "type": "boolean",
            "description": "Drop listings where no phone number could be found. Requires Fetch full details.",
            "default": false
          },
          "hasWebsite": {
            "title": "Only businesses with a website",
            "type": "boolean",
            "description": "Drop listings where no website could be found. Requires Fetch full details.",
            "default": false
          },
          "containsKeyword": {
            "title": "Must contain keyword",
            "type": "string",
            "description": "Extra client-side filter: keep only listings whose name, address, city, or category contains this text (accent-insensitive)."
          },
          "maxItems": {
            "title": "Max items",
            "minimum": 1,
            "maximum": 500,
            "type": "integer",
            "description": "Hard cap on emitted records. Note: Ja.is's own live-search API (which powers mode=search/byCategory/byCity) is itself capped at roughly 12-20 matches per query/category/city, regardless of this setting or the site's own displayed total-result count -- confirmed live (the `count` request parameter has no effect past that cap). mode=byUrl is not affected, since each URL is fetched independently.",
            "default": 30
          }
        }
      },
      "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
                  }
                }
              },
              "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}