AKC Events Scraper avatar

AKC Events Scraper

Pricing

from $1.24 / 1,000 akc event dates

Go to Apify Store
AKC Events Scraper

AKC Events Scraper

Search the public AKC Events Calendar by month, event type, breed, and state. Export dated event counts and drill-down URLs for competition monitoring.

Pricing

from $1.24 / 1,000 akc event dates

Rating

0.0

(0)

Developer

Automation Lab

Automation Lab

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

23 days ago

Last modified

Categories

Share

Search public AKC events by calendar month, competition type, breed, and US state. The Actor exports one normalized record per matching date with the event count and an AKC drill-down URL.

Use it to build a monthly competition calendar, compare scheduled runs, or feed dated AKC event availability into a spreadsheet or data pipeline. It does not scrape entrants, placements, dog results, or handlers.

What does AKC Events Scraper do?

The Actor queries the public American Kennel Club Events Calendar and turns its interactive month view into reusable JSON records.

It supports:

  • one to six consecutive months per run, starting at an explicit YYYY-MM or the current UTC month;
  • one or more AKC event type codes;
  • optional state filtering;
  • an optional exact AKC breed label;
  • a predictable maximum output limit;
  • direct links back to each dated AKC calendar view.

The primary output is a dated count, not an individual event-detail record. If the source says three agility events match September 12, the Actor saves one September 12 row with eventCount: 3.

Who is it for?

  • Competitors and handlers planning travel around upcoming competitions.
  • Breed clubs tracking relevant conformation and companion events.
  • Trainers reviewing agility, obedience, rally, scent work, and Fast CAT availability.
  • Researchers comparing event density across months or states.
  • Automation teams scheduling a monthly calendar export into Sheets, Airtable, or a database.

Why use this Actor?

The public calendar is designed for browsing. This Actor provides compact records that are easier to store, compare, filter, and integrate.

It uses the calendar's lightweight public structured-data route rather than rendering a browser. That keeps runs fast and avoids downloading images, fonts, advertising, or unrelated page assets. No AKC account, cookies, user credentials, or proxy configuration is required.

What AKC event data is extracted?

FieldMeaning
dateMatching calendar date in YYYY-MM-DD format
eventCountNumber of matching AKC events on that date
eventTypeCodeCalendar code such as AG, CONF, or SCWK
eventTypeHuman-readable competition type
monthRequested month
statesState filters; empty means all locations
breedResolved breed label, or null for all breeds
breedCodeAKC calendar breed code, or null
drillDownUrlAKC page for inspecting events on that date
sourceApiUrlPublic calendar endpoint used for the record
scrapedAtCollection timestamp

How to search AKC events

  1. Open the Actor input page.
  2. Omit the month for the current UTC month, or enter an explicit YYYY-MM; optionally set monthCount from 1 to 6.
  3. Add one or more event type codes.
  4. Optionally add state codes such as CA, TX, or NY.
  5. Optionally enter an exact AKC breed label such as Golden Retrievers.
  6. Set maxItems and start the run.
  7. Export the default dataset as JSON, CSV, Excel, or XML.

A useful first run is:

{
"monthCount": 2,
"eventTypes": ["AG"],
"states": ["CA"],
"maxItems": 100
}

Input parameters

month

First calendar month in YYYY-MM format. Omit it to use the current UTC month, including in recurring Tasks. Explicit historical months remain supported. Existing Tasks with an explicit month keep that month until you edit them.

monthCount

Integer from 1 to 6, default 1. Searches proceed by month chronologically, then by event type in input order, with December rolling into January. For example, { "month": "2026-12", "monthCount": 2, "eventTypes": ["AG"], "maxItems": 100 } illustrates a December–January horizon; those dates are illustrative, not a dynamic default.

eventTypes

One or more supported AKC codes. Common values include:

  • CONF — Conformation: All-Breed and Group
  • S — Conformation: Specialty
  • AG — Agility Trials
  • OBED — Obedience Trials
  • RLY — Rally Trials
  • SCWK — Scent Work
  • FCAT — Fast CAT
  • HT — Hunting Tests
  • HE — Herding Tests and Trials
  • TRK — Tracking Events

The input validator rejects unknown codes instead of silently returning misleading empty output. Codes are trimmed, case-insensitive and deduplicated in input order. Omitting or supplying an empty list uses CONF at runtime; the Console input form retains its AG default.

states

Optional list of two-letter state or territory codes. Use an empty list for all locations. Multiple states are combined into one calendar search, and every output row retains the applied list.

breed

Optional exact label from the AKC calendar, for example Golden Retrievers. A calendar breed code is also accepted. Breed filtering primarily applies to competition types where AKC exposes breed eligibility, especially conformation.

maxItems

Maximum dated rows saved globally across all months and event types, from 1 to 5,000 (default 100; zero is not unlimited). The Actor stops before exceeding this limit or the available charge budget. A row is a date/type/count combination, not an individual event.

Run summary and snapshot completeness

The Output tab links to uncharged RUN_SUMMARY JSON in the default key-value store. It includes resolved months, eventTypes, states, breed/breedCode, maxItems, savedRows, requestedSearches, completedSearches, skippedSearches, and per-search month/type/status, matching and saved row counts. matchingRows: null means a response was not successfully parsed.

  • complete: true, reason: "complete" means all requested searches completed and all matching rows were saved; zero rows can be a genuine empty snapshot.
  • truncated: true, complete: false means rows or unqueried searches may be omitted. At the cap, skipped searches are conservatively considered truncation even if they might have been empty. If the final search returns exactly the cap and no work is omitted, it is complete.
  • reason: "max_items" or "charge_budget" identifies a normal bounded stop.
  • reason: "failure" preserves partial work and never claims completeness. The run fails; saved rows remain available. Checkpoints use "in_progress" while work is ongoing; abrupt termination may leave that checkpoint, not a final receipt. Input-validation failures occur before a summary is available.

The summary is metadata, not an additional dataset item or item charge. Use it alongside the run's terminal status before treating a dataset as a full snapshot.

Example output

A California scent work search can return:

{
"date": "2026-09-05",
"eventCount": 2,
"eventTypeCode": "SCWK",
"eventType": "Scent Work",
"month": "2026-09",
"states": ["CA"],
"breed": null,
"breedCode": null,
"drillDownUrl": "https://www.apps.akc.org/apps/event_calendar/index.cfm?urlday=2026-09-05&event_type=SCWK&event_states=CA&event_month=Sep&event_year=2026&breed=&#buttonlocal",
"sourceApiUrl": "https://www.apps.akc.org/apps/event_calendar/queries/_functions_ajax2.cfm?start_month=9&start_year=2026&breed=&event_type=SCWK&event_states=CA",
"scrapedAt": "2026-08-28T15:09:20.099Z"
}

Open drillDownUrl to inspect the source calendar's individual listings for that date.

How much does it cost to search AKC events?

Pricing uses one run-start charge and one item charge for each dated record saved. Empty dates, malformed records, records outside the queried month, and the run summary are not charged as items. Pricing and date-count charge units are unchanged for multi-month runs.

At the BRONZE tier, the current source configuration is:

  • $0.05 per run start;
  • $0.002068 per dated item.

Example BRONZE totals:

OutputEstimated Actor charge
10 dated records$0.07068
25 dated records$0.10170
100 dated records$0.25680

Apify applies account-volume tiers, so the actual item rate can be lower at higher tiers. Platform compute may also appear according to your Apify plan. Check the live pricing panel before a large run.

Recurring monitoring workflow

For recurring competition monitoring:

  1. Save one Task per event type, state group, or breed.
  2. Schedule it monthly or weekly in Apify Console.
  3. Send each run's dataset to Google Sheets, Make, Zapier, or a webhook.
  4. Compare date/count pairs with the previous run.
  5. Follow changed dates through drillDownUrl.

The Actor produces snapshots. It does not maintain history, compute diffs, or send alerts itself; those steps belong in the scheduled workflow.

Export and integration options

The default dataset works with:

  • JSON, JSONL, CSV, Excel, XML, and RSS exports;
  • Apify webhooks;
  • Make and Zapier;
  • Google Sheets;
  • Python or JavaScript pipelines;
  • Apify API clients;
  • MCP-compatible AI assistants.

Use date, eventTypeCode, states, and breedCode as a practical comparison key. Keep scrapedAt to distinguish snapshots.

Run with the Apify API

Replace <APIFY_TOKEN> with your token.

cURL

curl -X POST \
"https://api.apify.com/v2/acts/automation-lab~akc-events-calendar/run-sync-get-dataset-items?token=<APIFY_TOKEN>" \
-H "Content-Type: application/json" \
-d '{"monthCount":2,"eventTypes":["AG"],"states":["CA"],"maxItems":100}'

JavaScript

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor('automation-lab/akc-events-calendar').call({
monthCount: 2,
eventTypes: ['AG'],
states: ['CA'],
maxItems: 100,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);

Python

from apify_client import ApifyClient
client = ApifyClient(token="<APIFY_TOKEN>")
run = client.actor("automation-lab/akc-events-calendar").call(run_input={
"monthCount": 2,
"eventTypes": ["AG"],
"states": ["CA"],
"maxItems": 100,
})
items = client.dataset(run["defaultDatasetId"]).list_items().items
print(items)

Use AKC Events Scraper through MCP

Add the Apify MCP server to Claude Code:

claude mcp add --transport http apify \
"https://mcp.apify.com?tools=automation-lab/akc-events-calendar"

Claude Desktop, Cursor, and VS Code setup

Claude Desktop, Cursor, and VS Code can use this equivalent MCP configuration:

{
"mcpServers": {
"apify": {
"url": "https://mcp.apify.com?tools=automation-lab/akc-events-calendar"
}
}
}

Example prompts:

  • “Find September AKC agility event dates in California.”
  • “Export Texas and Oklahoma conformation dates for Golden Retrievers.”
  • “Run the AKC calendar search for scent work and summarize the busiest dates.”

Limits and failure behavior

  • The source provides calendar counts, so multiple individual events can be represented by one dated row.
  • Dates outside each queried month are removed even when the calendar endpoint returns adjacent weeks. Every received row is validated before filtering or limiting; malformed/error-shaped responses cannot masquerade as an empty snapshot.
  • Network failures, timeouts, HTTP 429 and 5xx get at most three total attempts with bounded backoff; other non-200 statuses fail promptly. No browser/proxy fallback is enabled.
  • The Actor does not return entrants, placements, dogs, judges, handlers, or show results.
  • Breed names must match the public calendar label or code.
  • Empty valid searches succeed with an empty dataset.
  • Invalid months, event codes, states, breeds, HTTP errors, and malformed upstream responses fail the run clearly.
  • Public source content can change; use the linked AKC page as the final authority.

Failure diagnostics and privacy

Failed operations send sanitized diagnostic input, exceptions, and Actor/build/run IDs to our private GlitchTip service for repair. Secret fields and URL queries are removed; reports are retained for 30 days. No credentials or private response bodies are included in the run summary.

No AI/model provider is used. AKC receives only the public calendar filters needed for each request. Dataset records and RUN_SUMMARY remain in your Apify run storage under your account's retention settings; you can delete them in Console or through the storage API. The Actor maintains no separate history, cache, or session store. Our private diagnostic reports expire after 30 days. For help, open an issue on this Actor's Apify Store page.

Legality and responsible use

The Actor accesses public AKC calendar information without an account. Use it in accordance with applicable law, AKC terms, and Apify policies. Avoid excessive schedules, republishing copyrighted page content, or using event information for harassment or unsafe activity.

This tool is independent and is not affiliated with, endorsed by, or sponsored by the American Kennel Club.

This Actor is intentionally standalone because no current automation-lab Actor provides a directly complementary AKC or dog-competition dataset. Combine it with Apify webhooks, dataset exports, or your existing comparison pipeline rather than an unrelated scraper.

Troubleshooting

Why is the dataset empty?

The chosen month, event type, state, and breed combination may have no matching public dates. Try removing the breed or state filter, or verify the month in the AKC calendar.

Why was my breed rejected?

Use the full calendar label, such as Golden Retrievers, rather than a casual singular name. The AKC calendar code also works.

Why are there fewer rows than events?

Each row represents a date and contains eventCount. A count of four means four matching calendar events share that date.

Why did the run stop early?

Check RUN_SUMMARY and the run status. maxItems applies across all months and event types, not separately to each search; the charge budget can also stop output.

FAQ

Does it scrape AKC show results?

No. This Actor intentionally covers upcoming calendar counts and drill-down URLs. Entrants, placements, and results are excluded.

Does it need an AKC login or proxy?

No. It uses anonymous public calendar routes.

Can I search several event types?

Yes. Add several codes to eventTypes. Output rows identify the type that produced each match.

Can I monitor changes automatically?

Schedule an Apify Task and compare successive datasets in your preferred integration. The Actor itself emits the current snapshot and does not send change alerts.

Is an empty run an error?

No, when the source genuinely has no matching dates. Invalid inputs or unrecognizable source responses fail instead of being reported as an empty success.