{
  "openapi": "3.0.1",
  "info": {
    "title": "OGC API Records Extractor",
    "description": "Point at ANY OGC API - Records catalog (the JSON/GeoJSON successor to CSW) — pygeoapi, pycsw, ldproxy. List record catalogs or page /items by bbox/datetime/free-text/type/CQL to flat rows (recordId, type, title, created, keywords, themes, bbox, lon/lat) + raw GeoJSON. Pay per record.",
    "version": "0.1",
    "x-build-id": "UaQjF7Fb5ziuSX0wc"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/datamule~ogc-api-records-extractor/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-datamule-ogc-api-records-extractor",
        "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/datamule~ogc-api-records-extractor/runs": {
      "post": {
        "operationId": "runs-sync-datamule-ogc-api-records-extractor",
        "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/datamule~ogc-api-records-extractor/run-sync": {
      "post": {
        "operationId": "run-sync-datamule-ogc-api-records-extractor",
        "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": [
          "serviceRoot"
        ],
        "properties": {
          "serviceRoot": {
            "title": "OGC API - Records service root URL",
            "type": "string",
            "description": "The root URL of ANY OGC API - Records service (the modern JSON/GeoJSON catalog/metadata standard — the REST successor to CSW). Examples: https://demo.pygeoapi.io/master (pygeoapi, its dutch-metadata records catalog), https://demo.pycsw.org/gisdata (pycsw). Do NOT include /collections or /items — just the landing/API root."
          },
          "collectionId": {
            "title": "Catalog collection id(s)",
            "type": "array",
            "description": "Record-catalog collection id(s) to pull records from, e.g. dutch-metadata (pygeoapi) or metadata:main (pycsw). A catalog collection self-identifies with itemType=\"record\". Accepts one or more. Leave EMPTY to run in discovery mode (list every record catalog the service exposes). Turn on \"List collections only\" below to just browse what's available first.",
            "items": {
              "type": "string"
            }
          },
          "listCollectionsOnly": {
            "title": "List collections only (discovery)",
            "type": "boolean",
            "description": "When on, the actor only reads {serviceRoot}/collections and returns one row per available record catalog (id, title, description, itemType, keywords, spatial/temporal extent, CRS, items URL) — it does NOT fetch any records. Use this to discover what a service exposes, then set Catalog collection id(s) + a query to extract records.",
            "default": false
          },
          "q": {
            "title": "Free-text search (q)",
            "type": "string",
            "description": "OGC API - Records free-text query — matches record titles, descriptions and keywords. Example: kaart or climate. Leave empty for no text filter. (Honored by servers that implement the Records free-text search conformance class, e.g. pygeoapi, pycsw.)"
          },
          "bbox": {
            "title": "Bounding box (bbox)",
            "type": "array",
            "description": "Spatial filter as [west, south, east, north] in WGS84 decimal degrees (a 6-number [w,s,minZ,e,n,maxZ] 3D box is also accepted). Example for the Netherlands: [3, 50, 8, 54]. Records are matched by their footprint geometry. Leave empty for no spatial filter."
          },
          "datetime": {
            "title": "Date/time window",
            "type": "string",
            "description": "Temporal filter in RFC 3339. A single instant (2024-06-15T00:00:00Z), a closed range (2024-06-01T00:00:00Z/2024-06-30T23:59:59Z), or an open range using \"..\" (2024-06-01T00:00:00Z/.. or ../2024-06-30T00:00:00Z). Leave empty for no time filter."
          },
          "queryParams": {
            "title": "Extra query parameters",
            "type": "object",
            "description": "Arbitrary extra query-string parameters appended to each /items request, as a JSON object — the generic passthrough for OGC Records filters (type / externalId), CQL, and provider-specific keys. Examples: filter by record type {\"type\": \"dataset\"}; an external id {\"externalId\": \"…\"}; a CQL filter {\"filter\": \"type='service'\", \"filter-lang\": \"cql2-text\"}. The reserved keys bbox/datetime/q/limit/offset/f are managed by the actor and ignored here. Leave empty for none."
          },
          "limit": {
            "title": "Page size",
            "minimum": 1,
            "type": "integer",
            "description": "Server-side page size requested per /items call (the actor auto-follows the rel=\"next\" link regardless). Most servers cap this around 100–10000. Leave at the default unless you have a reason to change it.",
            "default": 100
          },
          "maxRecords": {
            "title": "Max records (total)",
            "minimum": 1,
            "type": "integer",
            "description": "Maximum total number of records to pull across all pages and catalogs (the actor auto-paginates until this cap or the result set is exhausted). The default total cap is 25 records. Each returned row is one `record` PPE event at the current FREE unit price of $0.0005, so the maximum default/example event charge falls to $0.0125, excluding Apify infrastructure cost.",
            "default": 25
          },
          "bearerToken": {
            "title": "Bearer token (optional)",
            "type": "string",
            "description": "Optional OAuth2 bearer token for key-gated deployments. Sent as Authorization: Bearer *** — NOT required for public catalogs (pygeoapi, pycsw demos) — leave empty. Never logged."
          },
          "extraHeaders": {
            "title": "Extra request headers",
            "type": "object",
            "description": "Optional extra HTTP headers to send with every request, as a JSON object, e.g. {\"key\": \"...\"} for a service that takes an API key in a header. Leave empty for public catalogs."
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}