{
  "openapi": "3.0.1",
  "info": {
    "title": "Gulesider Scraper - Norwegian Business Directory",
    "description": "Scrape Gulesider.no (Norway's leading business directory) listings. Search by category/keyword and city, or fetch full profiles by URL/ID. Get names, addresses, phones, categories, ratings, opening hours, websites, org numbers, coordinates, and images.",
    "version": "1.0",
    "x-build-id": "Sv1yQhesyVA6qSbcu"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/crawlerbros~gulesider-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-crawlerbros-gulesider-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~gulesider-scraper/runs": {
      "post": {
        "operationId": "runs-sync-crawlerbros-gulesider-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~gulesider-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-crawlerbros-gulesider-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",
              "detail"
            ],
            "type": "string",
            "description": "What to fetch: search by keyword/category & city, or fetch full business profiles from direct URLs/IDs.",
            "default": "search"
          },
          "query": {
            "title": "Category / keyword",
            "enum": [
              "custom",
              "pizza",
              "restaurant",
              "frisør",
              "tannlege",
              "advokat",
              "elektriker",
              "rørlegger",
              "maler",
              "snekker",
              "bilverksted",
              "hotell",
              "blomsterhandler",
              "regnskapsfører",
              "eiendomsmegler",
              "veterinær",
              "optiker",
              "apotek",
              "treningssenter",
              "massasje",
              "byggefirma",
              "taxi",
              "flyttebyrå",
              "gartner",
              "forsikringsmegler",
              "hundefrisør",
              "glassmester",
              "låsesmed",
              "revisor",
              "kafé",
              "bakeri"
            ],
            "type": "string",
            "description": "Business category or keyword to search for. Pick a common category from the list, or choose 'Custom' and type your own in the field below (mode=search). Can be left as 'Custom' with an empty custom field if you only want to search by city.",
            "default": "pizza"
          },
          "customQuery": {
            "title": "Custom category/keyword (overrides selection above)",
            "type": "string",
            "description": "Free-text category or keyword not in the curated list above, e.g. 'skorsteinsfeier' or 'IT-konsulent' (mode=search). Takes priority over 'Category / keyword' when set. Use correct Norwegian spelling with ae/oe/aa (æ/ø/å) -- Gulesider's own search does not fuzzy-match ASCII-folded keywords."
          },
          "city": {
            "title": "City",
            "type": "string",
            "description": "Norwegian city or town to search in, e.g. 'Oslo', 'Bergen', 'Trondheim' (mode=search). Leave empty to search all of Norway nationwide (requires a category/keyword).",
            "default": "Oslo"
          },
          "sortBy": {
            "title": "Sort order",
            "enum": [
              "relevance",
              "rating",
              "name"
            ],
            "type": "string",
            "description": "How to order the returned results (mode=search). Applied after fetching, since Gulesider's own listing order is relevance-based.",
            "default": "relevance"
          },
          "ratedOnly": {
            "title": "Only businesses with ratings",
            "type": "boolean",
            "description": "Only return businesses that have at least one customer rating (mode=search). Requires 'Fetch full business profiles' to be enabled, since ratings only appear on detail pages.",
            "default": false
          },
          "minRating": {
            "title": "Minimum rating",
            "enum": [
              "",
              "1",
              "2",
              "3",
              "4",
              "5"
            ],
            "type": "string",
            "description": "Only return businesses rated at least this many stars, e.g. '4' for 4.0+ (mode=search). Requires 'Fetch full business profiles' to be enabled, since ratings only appear on detail pages.",
            "default": ""
          },
          "hasWebsiteOnly": {
            "title": "Only businesses with a website",
            "type": "boolean",
            "description": "Only return businesses that list a website (mode=search). Websites are picked up directly from the search-results page for the businesses that show one there; enabling 'Fetch full business profiles' finds additional websites listed only on detail pages.",
            "default": false
          },
          "verifiedOnly": {
            "title": "Only businesses with confirmed info",
            "type": "boolean",
            "description": "Only return businesses that have confirmed/verified their own listing information with Gulesider (mode=search).",
            "default": false
          },
          "fetchDetails": {
            "title": "Fetch full business profiles",
            "type": "boolean",
            "description": "For each search result, also visit its business profile page to collect rating, opening hours, description, coordinates, organization number, founding date, VAT status, and social links. Slower, but far richer output (mode=search).",
            "default": false
          },
          "businessUrls": {
            "title": "Business profile URLs or IDs (mode=detail)",
            "type": "array",
            "description": "Direct Gulesider business URLs (e.g. https://www.gulesider.no/<name>/<id>/bedrift) or bare numeric business IDs to fetch, one per line. Use the 'sourceUrl' or 'businessId' field from search results.",
            "items": {
              "type": "string"
            },
            "default": []
          },
          "maxItems": {
            "title": "Max items",
            "minimum": 1,
            "maximum": 1000,
            "type": "integer",
            "description": "Hard cap on the number of business records to return.",
            "default": 50
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}