{
  "openapi": "3.0.1",
  "info": {
    "title": "Careforkids AU Scraper",
    "description": "Scrape Australia’s largest childcare directory with long day care, preschool, family day care, OSHC, and vacation care services. Returns centre profiles with address, fees, ratings, vacancies, features, images, and ACECQA approval numbers.",
    "version": "1.0",
    "x-build-id": "EovZ6pJdhlLhKdB7z"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/abotapi~careforkids-com-au-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-abotapi-careforkids-com-au-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~careforkids-com-au-scraper/runs": {
      "post": {
        "operationId": "runs-sync-abotapi-careforkids-com-au-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~careforkids-com-au-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-abotapi-careforkids-com-au-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": "1. Search mode",
            "enum": [
              "search",
              "url"
            ],
            "type": "string",
            "description": "Search mode = pick suburbs/postcodes + care types below. URL mode = paste any careforkids.com.au URL straight from a browser.",
            "default": "search"
          },
          "locations": {
            "title": "Suburb + postcode pairs",
            "type": "array",
            "description": "One or more {suburb, postcode} pairs. Each pair becomes a SERP page on careforkids.com.au. Suburb names are slugified automatically (\"Surry Hills\" → \"surry-hills\"). Postcode is the 4-digit Australian postcode. Examples: {\"suburb\":\"Sydney\",\"postcode\":\"2000\"} or {\"suburb\":\"Melbourne\",\"postcode\":\"3000\"}.",
            "items": {
              "type": "object",
              "properties": {
                "suburb": {
                  "type": "string",
                  "title": "Suburb",
                  "description": "Suburb name. Spaces and special characters are slugified automatically."
                },
                "postcode": {
                  "type": "string",
                  "title": "Postcode",
                  "description": "4-digit Australian postcode."
                }
              },
              "required": [
                "suburb",
                "postcode"
              ]
            }
          },
          "careTypes": {
            "title": "Care types",
            "uniqueItems": true,
            "type": "array",
            "description": "Filter by childcare service type. Each (location × type) pair becomes a separate SERP fetch. Pick \"all\" to grab every service in a suburb in one fetch (covers all the types below). Default \"all\" returns every centre advertising any of the seven care types.",
            "items": {
              "type": "string",
              "enum": [
                "all",
                "longdaycare",
                "familydaycare",
                "occasionalcare",
                "preschool",
                "beforeschoolcare",
                "vacationcare",
                "afterschoolcare"
              ],
              "enumTitles": [
                "All care types (single fetch per suburb)",
                "Long Day Care (formal centre)",
                "Family Day Care (educator at home)",
                "Occasional Care",
                "Preschool / Kindergarten",
                "Before School Care",
                "Vacation / Holiday Care",
                "After School Care"
              ]
            },
            "default": [
              "all"
            ]
          },
          "verifiedOnly": {
            "title": "Verified centres only (post-filter)",
            "type": "boolean",
            "description": "Drop cards where the centre is not flagged as verified by careforkids.com.au. Applied client-side after fetch.",
            "default": false
          },
          "vacanciesOnly": {
            "title": "Centres with vacancies only (post-filter)",
            "type": "boolean",
            "description": "Drop cards that report no current vacancies. Applied client-side after fetch.",
            "default": false
          },
          "minRating": {
            "title": "Minimum parent rating (post-filter)",
            "minimum": 1,
            "maximum": 5,
            "type": "integer",
            "description": "Drop cards rated below this 1-5 score (applied client-side after fetch). Centres with no rating are kept."
          },
          "maxDailyFee": {
            "title": "Maximum average daily fee, AUD (post-filter)",
            "minimum": 50,
            "maximum": 500,
            "type": "integer",
            "description": "Drop cards with an advertised average daily fee above this amount (applied client-side after fetch). Centres with no advertised fee are kept."
          },
          "urls": {
            "title": "Search URLs (URL mode)",
            "type": "array",
            "description": "One or more careforkids.com.au URLs. Examples: https://www.careforkids.com.au/child-care/sydney/2000 (all care types in Sydney CBD), https://www.careforkids.com.au/child-care-centre/melbourne/3000 (long day care in Melbourne CBD), or a single centre detail URL like https://www.careforkids.com.au/child-care/k60qk/ku-phillip-park-childrens-centre-woolloomooloo-2011. Multi-URL supported. Filter fields above (verifiedOnly, vacanciesOnly, minRating, maxDailyFee) still apply.",
            "items": {
              "type": "string"
            }
          },
          "maxListings": {
            "title": "Max listings (total)",
            "minimum": 0,
            "type": "integer",
            "description": "Stop after this many centres across all searches. 0 = no cap. Each suburb+postcode page returns roughly 5-50 centres (no pagination, single page exhausts the locality). Default 20 keeps runs bounded; raise it (or set 0) when scraping multiple suburbs.",
            "default": 20
          },
          "fetchDetails": {
            "title": "Fetch detail pages (richer data)",
            "type": "boolean",
            "description": "When ON, also fetch each centre's profile page for the full fee breakdown by age group, vacancy availability per day, NQS quality area ratings, gallery image URLs, contact name, contact hours, website + social links, service approval number, full feature list, and the top 10 parent reviews. SERP cards already include name, address, GPS, phone, rating, average fee, vacancies, and abbreviated feature list, so simple feeds work fine with this OFF. Forced ON when Reviews-only output is enabled.",
            "default": false
          },
          "reviewsOnly": {
            "title": "Reviews-only output (one record per review)",
            "type": "boolean",
            "description": "When ON, the dataset becomes one row per parent review (reviewer name, rating, date, full text, source, avatar) with centre context attached (centreId, centreName, suburb, postcode, state, GPS) instead of one row per centre. Pairs with either Search or URL mode. The site renders the top ~10 reviews in SSR per centre.",
            "default": false
          },
          "maxReviewsPerCentre": {
            "title": "Max reviews per centre (Reviews-only)",
            "minimum": 0,
            "type": "integer",
            "description": "Only used when Reviews-only output is ON. Cap how many reviews to emit per centre. The site renders the top 10 reviews in SSR; setting this above 10 has no effect. 0 = no cap (default).",
            "default": 0
          },
          "proxy": {
            "title": "Proxy configuration",
            "type": "object",
            "description": "CareForKids.com.au accepts naked Apify proxy out of the box, including the default Datacenter group available on Free plans. For higher volume or stable Australian routing, add groups: [\"RESIDENTIAL\"], country: \"AU\"."
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}