{
  "openapi": "3.0.1",
  "info": {
    "title": "Spain Property & Judicial Auctions Scraper | BOE",
    "description": "Scrape Spain's official BOE auction portal: judicial and public auction listings with expediente, dates, claim amounts, valuations, minimum bids, deposits, authority contact, property lots and documents. Monitoring (NEW, UPDATED, EXPIRED), incremental runs, resume, MCP export.",
    "version": "0.1",
    "x-build-id": "np3SiDC5edjbdCpxl"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/abotapi~boe-es-auction-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-abotapi-boe-es-auction-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/abotapi~boe-es-auction-scraper/runs": {
      "post": {
        "operationId": "runs-sync-abotapi-boe-es-auction-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/abotapi~boe-es-auction-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-abotapi-boe-es-auction-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",
              "url"
            ],
            "type": "string",
            "description": "Search walks auction listings by status and date windows. URL mode reads the specific auctions you paste.",
            "default": "search"
          },
          "estados": {
            "title": "Auction statuses",
            "type": "array",
            "description": "Search mode: auction statuses to walk. EJ = judicial enforcement (open auctions with dates), PU = upcoming public, SU = subsequent, CA = cancelled, FS = finished. CA and FS return very large sets; combine them with a narrow date window.",
            "items": {
              "type": "string",
              "enum": [
                "PU",
                "EJ",
                "SU",
                "CA",
                "FS"
              ],
              "enumTitles": [
                "PU - Upcoming",
                "EJ - Judicial enforcement",
                "SU - Subsequent",
                "CA - Cancelled",
                "FS - Finished"
              ]
            },
            "default": [
              "EJ"
            ]
          },
          "fechaFinDesde": {
            "title": "Conclusion date from (YYYY-MM-DD)",
            "type": "string",
            "description": "Search mode: only auctions concluding on or after this date (ISO date, e.g. 2026-10-01). Leave empty for no lower bound."
          },
          "fechaFinHasta": {
            "title": "Conclusion date to (YYYY-MM-DD)",
            "type": "string",
            "description": "Search mode: only auctions concluding on or before this date (ISO date, e.g. 2026-10-08). Leave empty for no upper bound."
          },
          "fechaInicioDesde": {
            "title": "Start date from (YYYY-MM-DD)",
            "type": "string",
            "description": "Search mode: only auctions starting on or after this date (ISO date). Leave empty for no lower bound."
          },
          "fechaInicioHasta": {
            "title": "Start date to (YYYY-MM-DD)",
            "type": "string",
            "description": "Search mode: only auctions starting on or before this date (ISO date). Leave empty for no upper bound."
          },
          "tipoBien": {
            "title": "Asset type",
            "enum": [
              "I",
              "V",
              ""
            ],
            "type": "string",
            "description": "Search mode: real estate auctions only (Inmuebles, the default and the original behaviour), vehicles only (Vehiculos), or all asset types. URL mode is unaffected.",
            "default": "I"
          },
          "sortField": {
            "title": "Sort results by",
            "enum": [
              "SUBASTA.FECHA_FIN",
              "SUBASTA.ID_SUBASTA_ORDENAR",
              "SUBASTA.ESTADO.CODIGO",
              "SUBASTA.POSTURA_MINIMA_MINIMA_LOTES"
            ],
            "type": "string",
            "description": "Search mode: the portal's own sort. Conclusion date (default and the original behaviour), auction identifier, status, or minimum bid.",
            "default": "SUBASTA.FECHA_FIN"
          },
          "sortOrder": {
            "title": "Sort order",
            "enum": [
              "asc",
              "desc"
            ],
            "type": "string",
            "description": "Search mode: ascending (default and the original behaviour) or descending.",
            "default": "asc"
          },
          "valorMinimo": {
            "title": "Min auction value (EUR, optional)",
            "type": "string",
            "description": "Search and URL modes: keep only auctions whose auction value is at least this many euros. Evaluated after each auction is read; needs detail reads on to apply everywhere."
          },
          "valorMaximo": {
            "title": "Max auction value (EUR, optional)",
            "type": "string",
            "description": "Search and URL modes: keep only auctions whose auction value is at most this many euros. Evaluated after each auction is read; needs detail reads on to apply everywhere."
          },
          "provincia": {
            "title": "Province (optional)",
            "type": "string",
            "description": "Search mode: narrow to one province - type its NAME (e.g. Madrid, Barcelona, Alicante; accents optional) or its INE code (01-52, e.g. 28 = Madrid). Leave empty for all provinces."
          },
          "idSubasta": {
            "title": "Auction id filter (optional)",
            "type": "string",
            "description": "Search mode: fetch one auction by its identifier (e.g. SUB-JA-2025-251191). The status filter is skipped for this lookup (the identifier already picks one auction); the date windows still apply."
          },
          "startUrls": {
            "title": "Auction links",
            "type": "array",
            "description": "URL mode: auction detail links, each carrying its auction id (detalleSubasta.php?idSub=SUB-...). Both id styles work - judicial (SUB-JA-...) and administrative/tax (SUB-AT-... with its alphanumeric tail). A link carrying extra search-context parameters (idBus, idLote) is read the same way, and a bare auction id (SUB-JA-...) is accepted too. The auction id is read from the link; entries are read in order.",
            "default": [
              "https://subastas.boe.es/detalleSubasta.php?idSub=SUB-JA-2025-251191",
              "https://subastas.boe.es/detalleSubasta.php?idSub=SUB-AT-2026-26R4686001266"
            ],
            "items": {
              "type": "string"
            }
          },
          "urls": {
            "title": "Auction links (alias)",
            "type": "array",
            "description": "Alias for Auction links, accepted under the name other Apify actors use for URL mode. Each entry is an auction detail link; entries are read in order.",
            "items": {
              "type": "string"
            }
          },
          "fetchDetails": {
            "title": "Read auction details",
            "type": "boolean",
            "description": "Read each auction's detail page (valuation, minimum bid, deposit, authority contact, property lots, documents). Turn off for a faster listing-only run. Each enriched auction is billed once as detail enrichment.",
            "default": true
          },
          "maxItems": {
            "title": "Max items",
            "minimum": 1,
            "type": "integer",
            "description": "Stop after this many records. This is THE cap: the run stops when it is reached or when listings run out.",
            "default": 20
          },
          "maxPages": {
            "title": "Max pages per status (0 = no cap)",
            "minimum": 0,
            "type": "integer",
            "description": "Advanced. Rarely needed: cap the listing pages read per status. Zero means no page cap; Max items still stops the run.",
            "default": 0
          },
          "proxyConfiguration": {
            "title": "Proxy configuration",
            "type": "object",
            "description": "Apify Proxy settings. Residential exits are recommended. Runs without a residential plan fall back automatically where possible; a free plan may read fewer pages.",
            "default": {
              "useApifyProxy": true,
              "apifyProxyGroups": [
                "RESIDENTIAL"
              ]
            }
          },
          "resumeFromRunId": {
            "title": "Resume from a previous run",
            "type": "string",
            "description": "Paste a previous run ID or dataset ID to continue a large pull without returning items already collected there."
          },
          "incrementalMode": {
            "title": "Incremental changes for scheduled runs",
            "type": "boolean",
            "description": "Turn this on for daily or recurring monitoring. The first run returns every matching auction as NEW. Later runs compare the full auction snapshot (amounts, dates, status, lots, authority) against the stored baseline and return only NEW and UPDATED auctions. Volatile fields that move without the auction changing - document list, authority phone/fax/email - are excluded from the comparison by default, and Ignore fields (below) adds more. Turn on Emit unchanged or Emit expired only when you also want those rows returned (and billed). State is kept separately for each status, date-window and link setup; use State key to name or deliberately share a monitoring campaign.",
            "default": false
          },
          "stateKey": {
            "title": "State key (optional, incremental mode only)",
            "type": "string",
            "description": "Optional. Name this monitoring campaign to keep its state stable, or deliberately share state across differently configured runs. Leave empty to let the actor derive a key automatically from the statuses and date settings."
          },
          "emitUnchanged": {
            "title": "Emit unchanged records (incremental mode only)",
            "type": "boolean",
            "description": "Off by default. Turn on to also return auctions that have not changed since the last run, marked UNCHANGED. This returns, and bills, extra rows you already have.",
            "default": false
          },
          "emitExpired": {
            "title": "Emit expired records (incremental mode only)",
            "type": "boolean",
            "description": "Off by default. Turn on to also return auctions that were present in a previous run but are no longer found, marked EXPIRED. Only produced once a run has fully scanned the tracked search.",
            "default": false
          },
          "ignoreFieldsForChanges": {
            "title": "Ignore fields when detecting changes (incremental mode only)",
            "type": "array",
            "description": "Incremental mode: changes to only these fields do not mark a record UPDATED. Defaults cover rotating document tokens and volatile counters.",
            "items": {
              "type": "string"
            }
          },
          "mcpConnectors": {
            "title": "Pipe results into your apps (optional)",
            "type": "array",
            "description": "Optionally send results into the apps you already use, via Model Context Protocol (MCP) connectors. Authorize one under Apify, Settings, API & Integrations, then select it here. Notion gets a rich page-per-item export; other connectors get a best-effort write or digest. Leave empty to skip; never changes the dataset output.",
            "items": {
              "type": "string"
            }
          },
          "notionParentPageUrl": {
            "title": "Notion parent page (Notion connector only)",
            "type": "string",
            "description": "URL or id of the Notion page under which item pages are created. Required to enable the Notion export; ignored by other connectors."
          },
          "maxNotifyListings": {
            "title": "Max items to export per connector",
            "minimum": 1,
            "maximum": 1000,
            "type": "integer",
            "description": "Cap on items written to each connector per run. Does not affect the dataset.",
            "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
                  },
                  "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}