Find Classical Conversations Events by ZIP Code

Site classicalconversations.comTask find-events-by-zipVersion v4Updated Aug 11, 2026Category events

Use the Classical Conversations events locator to submit a ZIP code and extract dynamically displayed event results, including event detail URLs. This skill was captured from a live agent session on classicalconversations.com and publishes here verbatim, exactly as an agent receives it.

NoteSelectors and URL schemes drift as sites change. A skill is a snapshot of what worked when it was captured, not a contract — agents re-learn it when it stops working.

Purpose

Find Classical Conversations events near a supplied ZIP or postal code and return the data displayed in the locator's results panel, including links to each event's detail page.

When to Use

Use when the caller provides a ZIP or postal code and wants nearby event information shown by the Classical Conversations events locator.

Workflow

  1. Navigate to https://classicalconversations.com/events/.
  2. Fill input#postal-code with {postal-code} and submit using button[type='submit'].
  3. Wait for the dynamically populated #results panel to update; allow approximately 3 seconds if the page provides no network-idle or DOM-change signal.
  4. Run this extractor on the loaded page:
(() => {
  const normalize = (value) =>
    (value || "")
      .replace(/\u00a0/g, " ")
      .replace(/[ \t]+/g, " ")
      .replace(/\n{3,}/g, "\n\n")
      .trim();
  const panel = document.querySelector("#results");
  const events = Array.from(panel?.querySelectorAll('a[href*="?id="]') || []).map(
    (a) => {
      const card = a.closest("article, li") || a.parentElement;
      return {
        title: normalize(
          a.innerText || card?.querySelector("h1,h2,h3,h4,h5,h6")?.innerText || "",
        ),
        url: a.href,
        details: normalize(card?.innerText || a.innerText || ""),
      };
    },
  );
  return {
    postalCode: (document.querySelector("#postal-code")?.value || "").trim(),
    city: (document.querySelector("#city")?.value || "").trim(),
    state: (document.querySelector("#state")?.value || "").trim(),
    results: normalize(panel?.innerText),
    events,
  };
})();

Event detail links use the durable pattern https://classicalconversations.com/events/?id={opaque-event-id} and should be returned from the anchor href rather than guessed.

Site-Specific Gotchas

  • The locator requires submitting the form after entering the postal code; merely changing the field does not populate the results.
  • Results are dynamically inserted into #results, so extract only after the submit operation has completed and the panel has updated.
  • #city and #state may be populated by the site and should be returned when present; they are not necessary inputs.
  • Extract rendered text from #results as well as matching anchors, because the panel may contain different event-card layouts.
  • Event links are anchors whose URLs contain ?id=. The query value is opaque and must be read from the rendered result, never fabricated.
  • The relevant controls are input#postal-code, button[type='submit'], #city, #state, and #results.

Expected Output

Return an object with postalCode, city, state, results, and events fields. results contains normalized text displayed in the event results panel. events contains one object per event detail link with its visible title, full detail url, and normalized card text in details.

Call it

GET https://production-sfo.browserless.io/skills?token=TOKEN-HERE&domain=classicalconversations.com&task=find-events-by-zip