{
  "openapi": "3.0.1",
  "info": {
    "title": "Nordic Grocery Offers - Weekly Deals in DK, NO, SE, FI",
    "description": "Current grocery offers in Denmark, Norway, Sweden and Finland by city or coordinates: Netto, REMA 1000, føtex, Lidl, KIWI, MENY, ICA, Coop, Willys, Prisma, S-market and more. Prices, pack sizes, unit prices and validity dates in one clean schema.",
    "version": "1.0",
    "x-build-id": "ZHYeEe4Bm2JUT0Hda"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/gratifying_graph~nordic-grocery-offers/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-gratifying_graph-nordic-grocery-offers",
        "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/gratifying_graph~nordic-grocery-offers/runs": {
      "post": {
        "operationId": "runs-sync-gratifying_graph-nordic-grocery-offers",
        "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/gratifying_graph~nordic-grocery-offers/run-sync": {
      "post": {
        "operationId": "run-sync-gratifying_graph-nordic-grocery-offers",
        "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": [
          "country"
        ],
        "properties": {
          "country": {
            "title": "Country",
            "enum": [
              "DK",
              "NO",
              "SE",
              "FI"
            ],
            "type": "string",
            "description": "Offers are local, so pick the country first. DK = Denmark (DKK), NO = Norway (NOK), SE = Sweden (SEK), FI = Finland (EUR)."
          },
          "city": {
            "title": "City",
            "enum": [
              "Copenhagen",
              "Aarhus",
              "Odense",
              "Aalborg",
              "Oslo",
              "Bergen",
              "Trondheim",
              "Stavanger",
              "Stockholm",
              "Gothenburg",
              "Malmo",
              "Uppsala",
              "Helsinki",
              "Espoo",
              "Tampere",
              "Turku"
            ],
            "type": "string",
            "description": "A major city in the chosen country. The search point is the city centre. For another place, leave this empty and fill latitude and longitude instead (coordinates win if both are set)."
          },
          "latitude": {
            "title": "Latitude",
            "type": "number",
            "description": "Optional. Search point latitude, e.g. 55.6761. Must be inside the chosen country. Use together with longitude instead of a city."
          },
          "longitude": {
            "title": "Longitude",
            "type": "number",
            "description": "Optional. Search point longitude, e.g. 12.5683. Must be inside the chosen country."
          },
          "radiusKm": {
            "title": "Radius (km)",
            "minimum": 1,
            "maximum": 100,
            "type": "integer",
            "description": "Offers from stores within this distance of the search point.",
            "default": 10
          },
          "mode": {
            "title": "Mode",
            "enum": [
              "search",
              "catalogs"
            ],
            "type": "string",
            "description": "search: find offers for your search terms (default). catalogs: every offer in the grocery catalogs near the location, optionally filtered by search terms.",
            "default": "search"
          },
          "queries": {
            "title": "Search terms",
            "type": "array",
            "description": "Products to search for. Local-language terms work best (kaffe, mælk, melk, mjölk, kahvi, maito). Required in search mode. In catalogs mode, optional: only offers whose name contains a term are kept.",
            "items": {
              "type": "string"
            }
          },
          "retailers": {
            "title": "Retailers",
            "type": "array",
            "description": "Only include these chains (e.g. Netto, REMA 1000, KIWI, ICA). Case, punctuation and Nordic letters do not matter, so fotex matches føtex. A name matches every chain that contains it: ICA matches ICA Nära and ICA Maxi. Empty = all chains.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "maxItems": {
            "title": "Max deals",
            "minimum": 1,
            "type": "integer",
            "description": "Cap on the number of deal records for the whole run. You pay per record, so a small cap keeps a test run cheap. In search mode the cap is shared evenly between search terms, and the source returns at most 100 offers per term.",
            "default": 200
          },
          "onlyWithPrice": {
            "title": "Only deals with a numeric price",
            "type": "boolean",
            "description": "Skip offers that carry no price.",
            "default": true
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}