No template needed, but here is the structure that works reliably for event scraping. Do not ask the agent to free-read the page and pull events, it drifts. Instead: first fetch the page (Firecrawl, or a headless browser if the events load via JS), then have the agent extract into a fixed schema, one object per event with title, start datetime, end datetime, location, source url, image url. Forcing a schema is what keeps date and location consistent instead of half-filled. Two things that matter for events specifically. Many sites already publish events as structured data (JSON-LD with @type Event in the page head), so check for that first, it gives you clean date, location, and image with zero guessing. And normalize the datetime to ISO format in the extraction step, since event pages write dates a hundred different ways. If the site paginates or loads on scroll, handle that in the fetch layer, not the LLM. Happy to sketch the schema if you share the site.