{
  "openapi": "3.0.1",
  "info": {
    "title": "MAM Shop Scraper - Asian Grocery Products & Prices",
    "description": "Produkte von mam-shop.de als sauberes JSON: Preise, Marken, Regale, Lagerbestand, Varianten und EAN-Codes. Ohne Code, ohne Login.",
    "version": "1.0",
    "x-build-id": "xFLQfUfoTPxHkENJ6"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/sian.agency~mam-shop-product-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-sian.agency-mam-shop-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~mam-shop-product-scraper/runs": {
      "post": {
        "operationId": "runs-sync-sian.agency-mam-shop-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~mam-shop-product-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-sian.agency-mam-shop-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": "🎯 What do you want to scrape?",
            "enum": [
              "search",
              "productDetail"
            ],
            "type": "string",
            "description": "Pick one per run. Catalogue Search walks the shop and returns many products per call. Product Detail takes product addresses and returns one row each, with the EAN barcode that the catalogue listing does not carry.",
            "default": "search"
          },
          "searchTerms": {
            "title": "🔑 Search terms",
            "type": "array",
            "description": "Words to look for. A product is returned when a term appears in its name, brand, shelf tags or description, so 'ramen' also catches 'Shin Ramyun'. Terms are combined with OR: 'ramen' plus 'kimchi' returns both. Leave this empty and the run returns everything in the chosen shelf, newest products first. Measured on 2026-09-10: 'ramen' matched 770 products, 180 of them in stock.",
            "default": [
              "ramen"
            ],
            "items": {
              "type": "string"
            }
          },
          "category": {
            "title": "🗂️ Shelf",
            "enum": [
              "Any",
              "instant-noodles",
              "nudeln-reis",
              "snacks-susses",
              "chips-knabbereien",
              "kekse",
              "mochis",
              "bonbons-zuckerln",
              "getranke",
              "tee-matcha",
              "alkohol",
              "saucen-gewurze",
              "saucen-pasten",
              "trockenfruchte-gemuse",
              "sonstiges",
              "best-deals",
              "bestseller-asiatische-lebensmittel"
            ],
            "type": "string",
            "description": "Take one shelf of the shop instead of the whole feed. These are the shop's own shelves, in its own German wording, and the counts in brackets were measured on 2026-09-10. Two things worth knowing. A shelf is what the shop sells today; every shelf sampled was 99-100% in stock. 'Any' reads the full product feed instead, which also holds discontinued articles: 4,812 products of which only 781 had stock. A shelf is also far cheaper, because one call covers it. Search terms still apply on top.",
            "default": "Any"
          },
          "collectionUrls": {
            "title": "🧺 Shelf addresses",
            "type": "array",
            "description": "Paste shelf addresses copied from the shop, for example https://mam-shop.de/collections/samyang-buldak-ramen-noodles. Only those shelves are read, which is much faster than walking the whole feed and reaches the 121 shelves the Shelf list does not name: brand pages, seasonal shelves, bundles. Leave it empty to use the Shelf setting instead. Search terms still apply on top.",
            "items": {
              "type": "string"
            }
          },
          "inStockOnly": {
            "title": "✅ In stock only",
            "type": "boolean",
            "description": "Skip products where every variant is sold out. On by default, because the shop's full product feed keeps discontinued articles: 4,812 products were in it on 2026-09-10 and only 781 had stock. Switch it off to get the archive as well. That is useful for tracking what a shop used to carry, though most of those rows cannot be bought.",
            "default": true
          },
          "maxItems": {
            "title": "🔢 Max products",
            "minimum": 1,
            "maximum": 5000,
            "type": "integer",
            "description": "Stop after this many products. The run ends as soon as the number is reached, so it is also your spending ceiling. The whole feed is about 4,812 products and about 781 of them are in stock; set 5000 to be sure of taking all of them even as the shop grows.",
            "default": 100
          },
          "productUrls": {
            "title": "🔗 Product addresses",
            "type": "array",
            "description": "Product page addresses copied from the shop, for example https://mam-shop.de/products/samyang-buldak-hot-chicken-ramen-5x140g. Each one returns a single row carrying the EAN barcode, which no catalogue search row has. A bare product handle works too. Addresses of discontinued articles can come back as 'no longer in the shop'. Two of thirty sampled did.",
            "default": [
              "https://mam-shop.de/products/samyang-buldak-hot-chicken-ramen-5x140g"
            ],
            "items": {
              "type": "string"
            }
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}