Childcare AU icon

Childcare AU

Scrape Australia’s largest childcare directory careforkids.com.au with long day care, preschool, family day care, OSHC, and vacation care services.…

Start using this actor on Apify ↗Need a custom scraper?Contact us ↗

Childcare AU at a glance

Childcare AU is a ready-to-run Apify actor from abotapi for collecting lead generation data. Its documented output includes id, change type (incremental mode), url, centre name and suburb, which you can export as JSON, CSV or Excel or read through the Apify API. It costs $2.80 per 1,000 results on the Apify Free plan and from $2.00 on paid plans, with smaller per-run or optional feature charges listed on Apify.

Runs on
Apify cloud: console, API, schedules and integrations
Data type
Lead Generation, Automation, Developer Tools
Region
Oceania
Pricing
$2.80 per 1,000 results (Free plan), from $2.00 on paid plans
Output
Documented below · JSON, CSV, Excel
Inputs
21 options

Scrape Australia’s largest childcare directory careforkids.com.au 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.

What Childcare AU: Centres, Fees, Vacancies & NQS Ratings can do

  • Two ways in. Search mode sweeps any suburb + postcode across one or more care types in a single run; URL mode accepts a pasted search page or a single centre link straight from a browser.
  • A whole suburb in one page. Each suburb + postcode combination returns every centre CareForKids lists there in one page fetch, so a single run already covers a full locality without walking extra pages.
  • Full profile on demand. Switch on detail fetching for the complete fee table by age band, day-by-day vacancy schedule, all seven NQS quality area ratings, gallery images, contact name and hours, socials, provider group and the ACECQA service approval number.
  • Reviews as their own feed. Switch to reviews-only output and get one row per parent review (name, rating, date, full text, source, avatar) with the centre's context attached, instead of one row per centre.
  • Filter before you pay. Verified-only, has-vacancies, minimum rating and maximum daily fee narrow results in Search mode and on any pasted URL, including a single centre link.
  • Built for monitoring. Resume a large multi-suburb sweep that got interrupted, or turn on incremental mode to schedule the same search and get back only new, changed, reappeared or expired centres.

Choose what to collect

These inputs let you configure Childcare AU: Centres, Fees, Vacancies & NQS Ratings. Open the actor on Apify to enter your values and review the current options.

Supported input fields
InputWhat it controls
modestring · requiredSearch mode = pick suburbs/postcodes + care types below. URL mode = paste any careforkids.com.au URL straight from a browser.

Choices: search, url

locationsarrayOne 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"}. The postcode is optional: with a suburb name only, the postcode is looked up on the site (an unmatched name is logged as an error and skipped).
careTypesarrayFilter 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.
verifiedOnlybooleanDrop centres not flagged as verified by careforkids.com.au. Applies in Search mode and to any pasted URL, a search results URL or a single centre URL.
vacanciesOnlybooleanDrop centres that report no current vacancies. Applies in Search mode and to any pasted URL, a search results URL or a single centre URL.
minRatingintegerDrop centres rated below this 1-5 score. Centres with no rating are kept. Applies in Search mode and to any pasted URL, a search results URL or a single centre URL.
maxDailyFeeintegerDrop centres with an advertised average daily fee above this amount. Centres with no advertised fee are kept. Applies in Search mode and to any pasted URL, a search results URL or a single centre URL.
Show 14 more inputs
More input fields
InputWhat it controls
urlsarrayOne 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/pre-school/sydney/2000 (pre-schools in Sydney CBD; other care-type prefixes work the same way), 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, including to a single pasted centre URL, not only a pasted search URL.
maxListingsintegerStop 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.
fetchDetailsbooleanWhen 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 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.
reviewsOnlybooleanWhen 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.
maxReviewsPerCentreintegerCaps how many reviews are returned per centre: it limits the Reviews-only rows AND the reviews embedded on detail rows and on pasted single-centre rows. Default 20; 0 or any value above 1000 uses the 1000 ceiling.
resumeFromRunIdstringPaste a previous run ID or dataset ID to continue a large crawl of centres without returning or charging for centres already collected there. Use this after an interrupted run, or when continuing a suburb sweep in another run. For recurring monitoring of the same search, use Incremental mode below instead.
incrementalModebooleanTurn this on for daily or weekly monitoring. The first run returns all matching centres as NEW. Later runs normally return only NEW, UPDATED, and REAPPEARED centres. UPDATED means any returned field changed (fee, vacancies, ratings, review counts, fee tables, detail fields, etc.); the timestamp scrapedAt and the volatile raw.WaitlistUrl / raw.SpecialOfferImage are never compared, and you can exclude more fields with "Ignore fields when detecting changes". Turn on "Emit unchanged" or "Emit expired" only when you also want those centres returned (and billed). State is kept separately for each suburb/postcode/care-type/URL and filter/detail setup; use State key when you want to name or deliberately share a monitoring campaign. To continue one specific interrupted run instead, use Resume from a previous run above. Off by default so existing scheduled runs are unaffected.
stateKeystringOptional. Name this monitoring campaign to keep its state stable, or to deliberately share state across differently-configured runs. Leave empty to let the actor derive a key automatically from the locations/care types/URLs and filter/detail settings, different searches then never mix state with each other.
emitUnchangedbooleanOff by default. Turn on to also return centres that have not changed since the last run, marked UNCHANGED. This returns, and bills, extra rows you already have, so leave it off unless you specifically want the full snapshot every run.
emitExpiredbooleanOff by default. Turn on to also return centres 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, not when Max listings capped it, when a search was unreachable, or when Resume was used. This returns, and bills, extra synthetic rows, so leave it off unless you need this tracking.
ignoreFieldsForChangesarrayIncremental mode only. Field names (matched at any depth, e.g. dailyFee, hasVacancies, reviewCount) that must NOT count as a change. A centre that differs only in these fields stays UNCHANGED and they are left out of changedFields. The fields are still returned in the output. Changing this list never causes a one-time wave of UPDATED rows. Already ignored automatically: scrapedAt and the volatile raw.WaitlistUrl / raw.SpecialOfferImage.
mcpConnectorsarrayOptionally send the scraped results into the apps you already use, via Model Context Protocol (MCP) connectors. Authorize a connector once under Apify → Settings → Integrations, then select it here. The connector receives a condensed, human-readable summary per item (title + key fields), not the full JSON, the complete record stays in the dataset. Leave empty to skip. Supported: Notion (https://mcp.notion.com/mcp), Linear (https://mcp.linear.app/sse), Airtable (https://mcp.airtable.com/mcp), Apify (https://mcp.apify.com).
notionParentPageUrlstringURL (or id) of the Notion page under which item pages are created. Required to enable the Notion export; ignored by other connectors.
maxNotifyListingsintegerCap on items written to each connector per run. Does not affect the dataset.

Fields in the output

The documented dataset includes the fields below. Availability can depend on the source page and selected mode.

idID
changeTypeChange type (incremental mode) (text)
urlURL (link)
nameCentre name
suburbSuburb
postcodePostcode
stateState
addressAddress
latitudeLat
longitudeLng
phonePhone
ratingRating
Show 28 more fields
reviewCountReviews
dailyFeeAvg fee/day
hasVacanciesVacancies
isVerifiedVerified
listingTypeTier
careTypesCare types
nqsRatingNQS
providerGroupGroup
websiteUrlWebsite (link)
logoUrlLogo (link)
changedFieldsChanged fields (incremental mode) (array)
firstSeenAtFirst seen (incremental mode) (date)
lastSeenAtLast seen (incremental mode) (date)
scrapedAtScraped
centreIdCentre ID
centreNameCentre
centreUrlCentre URL (link)
reviewerNameReviewer
dateDate
textReview
sourceSource
avatarUrlAvatar (link)
contactNameContact name
serviceApprovalNumberService approval number
approvedPlacesApproved places
feeGroupsFees by age band (object)
vacanciesVacancy schedule (array)
nqsAreaRatingsNQS area ratings (array)

Example output

An example from this actor’s documentation. Values are illustrative; this is not a fresh live result.

{
  "id": "00000",
  "url": "https://www.careforkids.com.au/child-care/00000/sample-centre-suburb-2000",
  "name": "Sample Childcare Centre",
  "suburb": "Sample Suburb",
  "postcode": "2000",
  "state": "NSW",
  "address": "Sample Address, Sample Suburb, NSW",
  "latitude": -33,
  "longitude": 151,
  "phone": "+61 2 0000 0000",
  "rating": 4.5,
  "reviewCount": 0,
  "dailyFee": 200,
  "hasVacancies": true,
  "isVerified": true,
  "listingType": "Standard",
  "careTypes": [
    "Long Day Care"
  ],
  "requestedCareType": "longdaycare",
  "services": [
    "Sample Service A",
    "Sample Service B"
  ],
  "nqsRating": "Meeting",
  "nqsRatingOverall": "Meeting",
  "nqsRatingLabel": "Meeting National Quality Standard",
  "nqsAreaRatings": [
    "Meeting NQS",
    "Meeting NQS",
    "Meeting NQS",
    "Meeting NQS",
    "Meeting NQS",
    "Meeting NQS",
    "Meeting NQS"
  ],
  "providerGroup": "Sample Provider Group",
  "googlePlaceId": "ChIJ0000000000",
  "logoUrl": "https://img-cdn.example.com/api/img?type=UserPhoto&id=00000",
  "galleryImageUrls": [
    "https://img-cdn.example.com/api/img?type=UserImage&id=00001",
    "https://img-cdn.example.com/api/img?type=UserImage&id=00002"
  ],
  "feeGroups": [
    {
      "careType": "Long Day Care",
      "fees": [
        {
          "fromWeeks": 6,
          "toYears": 2,
          "maxPrice": 200,
          "feeTypeDisplay": "/day"
        },
        {
          "fromYears": 2,
          "toYears": 5,
          "maxPrice": 200,
          "feeTypeDisplay": "/day"
        }
      ]
    }
  ],
  "vacancies": [
    {
      "careType": "Long Day Care",
      "ageGroup": "6 wks to 2 yrs",
      "ageGroupLabel": "Babies",
      "daysOfWeek": [
        false,
        true,
        true,
        true,
        true,
        true,
        false
      ]
    }
  ],
  "serviceExtras": [
    {
      "id": 1,
      "name": "Sample Service Feature",
      "iconId": "sample-feature"
    }
  ],
  "highlights": "Sample highlight bullet|Another sample bullet|Final sample bullet",
  "hasWaitlist": false,
  "dailyAverageFee": 200,
  "approvedPlaces": 90,
  "serviceApprovalNumber": "SE-00000000",
  "contactName": "Sample Contact, Director",
  "contactTime": "7:30am to 6:00pm",
  "websiteUrl": "https://www.example.com/sample",
  "facebookUrl": "https://www.facebook.com/sample-childcare-centre",
  "instagramUrl": "https://www.instagram.com/sample_childcare_centre",
  "scrapedAt": "2026-01-01T00:00:00.000Z"
}

Ways to use this data

  • Parents and relocation planners: compare fees, vacancies and NQS ratings across a shortlist of suburbs before enrolling.
  • Childcare operators and franchise groups: track competitor pricing, vacancy trends and parent reviews in nearby suburbs.
  • Directory and comparison sites: republish a normalized childcare dataset for a suburb or region alongside your own listings.
  • Researchers and policy analysts: build a dataset of NQS ratings, approved-place capacity and fee bands across a state or region.

Before you run

Start with a small input and check the resulting records against your expected fields. Source content and actor options can change; the current Apify listing is the reference for availability and pricing.

Questions about this actor

What data does Childcare AU return?

The documented output for Childcare AU includes id, change type (incremental mode), url, centre name, suburb, postcode, state and address. Availability of each field depends on the source page and the selected mode.

How much does Childcare AU cost?

It costs $2.80 per 1,000 results on the Apify Free plan and from $2.00 on paid plans, with smaller per-run or optional feature charges listed on Apify. The Apify listing shows the current rate for every plan.

Can I monitor a suburb and get only new or changed centres?

Yes. Schedule the actor and turn on Incremental mode. Each run then returns only new, updated, reappeared or expired centres for that search, and unchanged ones are not billed unless you turn Emit unchanged on. This does not apply to Reviews-only output.

Does Verified centres only work on a pasted centre link?

Yes. The centre page's Verified badge is read, so a pasted centre link carries its real isVerified value. With Verified centres only on, a verified centre is kept and an unverified centre is dropped.

Can I use it with AI agents or MCP?

Yes. Call it from any Apify integration or MCP client, and use the connector field to push results into Notion, Linear or Airtable.

Ready to collect with Childcare AU?

Run it on Apify with your own input and export the results as JSON, CSV or Excel.