{
  "openapi": "3.0.1",
  "info": {
    "title": "asiafoodland Scraper - German Asia Shop Prices",
    "description": "Exportiere den asiafoodland.de-Katalog: Preise, Grundpreis, EAN-Codes, Marken, Zutaten, Herkunftsland und Lagerbestand für 2.220 asiatische Lebensmittel.",
    "version": "1.0",
    "x-build-id": "nAmbnEaCnF8dEjXf4"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/sian.agency~asiafoodland-product-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-sian.agency-asiafoodland-product-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/sian.agency~asiafoodland-product-scraper/runs": {
      "post": {
        "operationId": "runs-sync-sian.agency-asiafoodland-product-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/sian.agency~asiafoodland-product-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-sian.agency-asiafoodland-product-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": {
          "operation": {
            "title": "🎛️ Operation",
            "enum": [
              "catalog",
              "productDetail"
            ],
            "type": "string",
            "description": "Catalogue searches the shop for your keywords, or walks the shelves you pick, and returns one row per product with price, price per kilo or litre, brand, image, stock count, delivery window and in-stock state. Product detail takes product page links and returns one deeper row each, adding the EAN barcode, the shop's article number, the ingredient list, the country of origin, the allergen note, the full description, the shelf path and every published image. Catalogue is far cheaper per product:…",
            "default": "catalog"
          },
          "searchTerms": {
            "title": "🔍 Search terms",
            "type": "array",
            "description": "German search words, one per line. The shop is German, so German words find the most. Each term is searched separately and every product it returns becomes a row. Clear this field, leave the shelf on Everything and leave the shelf links empty to export the whole shop instead - all 2,220 products.",
            "default": [
              "ramen"
            ],
            "items": {
              "type": "string"
            }
          },
          "shelf": {
            "title": "🗂️ Shelf",
            "enum": [
              "Any",
              "food",
              "non-food",
              "getraenke-tee",
              "sushi-co",
              "food/gewuerze-pasten",
              "food/fertiggerichte-nudelsuppe",
              "food/snacks-suesses",
              "food/fertigsauce",
              "food/reis-nudeln",
              "food/fruechte-gemuese-kokos",
              "food/sojasauce",
              "food/oel-essig-fischsauce",
              "non-food/kueche-staebchen",
              "getraenke-tee/tee-kaffee"
            ],
            "type": "string",
            "description": "Which shelf to walk when you are not searching. Every count was measured by walking the shelf to its last page on 2026-09-10. Everything walks all four top shelves and removes duplicates by the shop's product id, which is why it returns 2,220 rather than the 2,395 the four shelves sum to - about 175 products are filed twice. The ten entries below the four top shelves are sub-shelves of them, offered because they are the ones people actually want; there are 395 shelves in all and the field…",
            "default": "Any"
          },
          "categoryUrls": {
            "title": "📂 Shelf links",
            "type": "array",
            "description": "Paste any shelf address from the shop to walk it, including the 380 sub-shelves the dropdown above does not list - from Currypaste and Sushi-Ingwer down to Essstäbchen and Energy Drinks. One link per line. Links given here are walked in addition to the shelf picked above.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "sortBy": {
            "title": "↕️ Sort",
            "enum": [
              "shopDefault",
              "nameAsc",
              "priceAsc",
              "priceDesc",
              "bestSelling",
              "mostViewed"
            ],
            "type": "string",
            "description": "The shop's own sort order, applied before rows are counted - it decides which products you get when the maximum stops a run early. Every value here was confirmed to change the returned order on 2026-09-10. The shop's numbering also contains a sixth value that returns the default order unchanged; it is deliberately not offered rather than sold and silently ignored. Leave it on Shop default to get available products first: the shop's own order puts everything it can ship ahead of everything it…",
            "default": "shopDefault"
          },
          "inStockOnly": {
            "title": "✅ In stock only",
            "type": "boolean",
            "description": "Keep only products the shop can ship today. Off by default so a catalogue export is complete, but this is a real filter here rather than a rounding error: 1,628 of the 2,395 products on the four shelves were available on 2026-09-10, so switching it on removes about a third. It also drops the handful of products whose listing tile says nothing either way because their options have to be picked on the product page - the filter promises shippable, so anything unproven goes. Sold-out products are…",
            "default": false
          },
          "productUrls": {
            "title": "🔗 Product links",
            "type": "array",
            "description": "Product page addresses, one per line, for detail mode. They all end in .html and sit under the shelf they belong to. Each becomes one deeper row carrying the EAN barcode, the article number, the ingredient list, the country of origin, the allergen note, the full description, the shelf path and the image gallery. A link the shop no longer serves is reported as such on its own row instead of being dropped.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "maxItems": {
            "title": "🔢 Maximum products",
            "minimum": 1,
            "maximum": 2500,
            "type": "integer",
            "description": "Stops the run once this many rows exist, so a first run costs what you expect. The shop hands out 24 products per fetch, so a maximum of 25 reads two pages. Raise it to 2500 for the entire shop - the catalogue is 2,220 products, so anything above that changes nothing.",
            "default": 25
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}