{
  "openapi": "3.0.1",
  "info": {
    "title": "Dezeen Articles Scraper",
    "description": "Searches Dezeen, the world's most-read architecture and design publication, and returns full article records — title, author, categories, tags, image, publish date — from its public WordPress API, with optional comment threads.",
    "version": "0.1",
    "x-build-id": "ejRKPqi6YC6DNgCqo"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/scrapyx~dezeen-articles-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-scrapyx-dezeen-articles-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/scrapyx~dezeen-articles-scraper/runs": {
      "post": {
        "operationId": "runs-sync-scrapyx-dezeen-articles-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/scrapyx~dezeen-articles-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-scrapyx-dezeen-articles-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": {
          "searchQueries": {
            "title": "Search queries",
            "type": "array",
            "description": "One search per entry, each with its own SEARCH_SUMMARY row — e.g. `sustainable architecture`, `3D printing`. This is WordPress full-text search across title/content, not exact-phrase matching. Leave empty (with 'Post URLs' also empty) to fetch the latest articles instead, optionally narrowed by the category/tag/author/date filters below.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "postUrls": {
            "title": "Direct article URLs",
            "type": "array",
            "description": "Full dezeen.com article URLs (e.g. https://www.dezeen.com/2026/08/19/some-slug/) to fetch by exact match instead of searching. Each becomes its own POST row (plus COMMENT rows if enabled below). Combine freely with 'Search queries'.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "categorySlugs": {
            "title": "Filter by category (slugs)",
            "type": "array",
            "description": "Restrict every query to these categories, e.g. `architecture`, `interiors`, `design`, `technology` — the slug from the category's own URL on dezeen.com, not the display name. Dezeen also categorises by material/product/studio name (1,135 categories total), not just editorial section. A slug that does not exist on the site fails the run with an ERROR row naming the bad slug, rather than silently returning the unfiltered archive.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "tagSlugs": {
            "title": "Filter by tag (slugs)",
            "type": "array",
            "description": "Restrict every query to these tags, e.g. `sustainable-architecture`, `sustainable-design`, `house` — the slug from the tag's own URL. Same fail-loud behaviour as category slugs on an unresolvable value.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "authorSlugs": {
            "title": "Filter by author (slugs)",
            "type": "array",
            "description": "Restrict every query to these authors, e.g. `aaronbetsky` — the slug from /author/<slug>/ on dezeen.com. Same fail-loud behaviour as category/tag slugs.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "publishedAfter": {
            "title": "Published after",
            "type": "string",
            "description": "Only articles published on or after this date/time. Format YYYY-MM-DD or YYYY-MM-DDTHH:MM:SS (UTC). Leave empty for no lower bound.",
            "default": ""
          },
          "publishedBefore": {
            "title": "Published before",
            "type": "string",
            "description": "Only articles published before this date/time. Format YYYY-MM-DD or YYYY-MM-DDTHH:MM:SS (UTC). Leave empty for no upper bound.",
            "default": ""
          },
          "sortBy": {
            "title": "Sort by",
            "enum": [
              "date",
              "modified",
              "id",
              "title",
              "slug"
            ],
            "type": "string",
            "description": "How results are ordered. Ignored (upstream forces relevance ordering) whenever a search query is non-empty — set here it only affects filter-only / latest-articles runs.",
            "default": "date"
          },
          "sortOrder": {
            "title": "Sort order",
            "enum": [
              "desc",
              "asc"
            ],
            "type": "string",
            "description": "Ascending or descending for the 'Sort by' field above.",
            "default": "desc"
          },
          "maxItemsPerQuery": {
            "title": "Max articles per query",
            "minimum": 0,
            "type": "integer",
            "description": "Stop after this many articles per search query / URL / latest-articles run. Set to 0 for unlimited (walks every page 'Max pages per query' allows).",
            "default": 25
          },
          "maxPagesPerQuery": {
            "title": "Max pages per query",
            "minimum": 1,
            "type": "integer",
            "description": "Caps how deep the crawl walks per query, even when 'Max articles per query' is unlimited. Each page holds up to 'Results per request' articles.",
            "default": 10
          },
          "resultsPerRequest": {
            "title": "Results per request",
            "minimum": 1,
            "maximum": 100,
            "type": "integer",
            "description": "Articles fetched per HTTP request (upstream's own per_page parameter). Hard-capped at 100 by the API — any higher value fails the run.",
            "default": 25
          },
          "includeArticleContent": {
            "title": "Include full article HTML",
            "type": "boolean",
            "description": "The full rendered article body HTML, in addition to title/excerpt/author/categories/tags/image. On by default -- full article content is the main reason to use this actor. Set to false only to save payload weight when you genuinely just need headlines/metadata.",
            "default": true
          },
          "includeComments": {
            "title": "Include comments",
            "type": "boolean",
            "description": "Fetch each article's comments as separate COMMENT rows (batched, not one request per article). Off by default since most articles carry zero-to-dozens of comments and many use cases only need the articles themselves.",
            "default": false
          },
          "maxCommentsPerArticle": {
            "title": "Max comments per article",
            "minimum": 0,
            "type": "integer",
            "description": "Only used when 'Include comments' is on. Set to 0 for unlimited (all comments on the article).",
            "default": 50
          },
          "maxConcurrency": {
            "title": "Max concurrent requests",
            "minimum": 1,
            "maximum": 16,
            "type": "integer",
            "description": "Upper bound on requests in flight at once, across all queries, taxonomy lookups and comment fetches.",
            "default": 5
          },
          "minRequestInterval": {
            "title": "Min seconds between request starts",
            "minimum": 0,
            "type": "number",
            "description": "Shared pacing floor across all requests this run makes, independent of 'Max concurrent requests'. robots.txt sets no Crawl-delay for this host; the default is this portfolio's own politeness baseline, not a site requirement.",
            "default": 0.25
          },
          "proxyConfiguration": {
            "title": "Proxy configuration",
            "type": "object",
            "description": "Apify Proxy on the shared datacenter pool. This is the default because it is included in your plan at no extra cost and this target works through it. If you start seeing blocks, challenges or empty results, switch the group here to Residential -- it uses real consumer IPs and gets through more, but Apify bills residential traffic per gigabyte, so leave it off unless you need it.",
            "default": {
              "useApifyProxy": 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
                  }
                }
              },
              "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}