<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom">
<channel>
<title>FindLocal blog</title>
<link>https://findlocal.community/blog</link>
<atom:link href="https://findlocal.community/blog/rss.xml" rel="self" type="application/rss+xml"/>
<description>Guides and notes on local event data: the FindLocal API, MCP server and widgets.</description>
<language>en-us</language>
<lastBuildDate>Sun, 25 Oct 2026 18:56:46 GMT</lastBuildDate>
<item><title>Add a Live Local Events Feed to a Lovable App in 5 Minutes</title><link>https://findlocal.community/blog/lovable-local-events-feed</link><guid isPermaLink="true">https://findlocal.community/blog/lovable-local-events-feed</guid><pubDate>Sun, 25 Oct 2026 00:00:00 GMT</pubDate><description>Give your Lovable (or Bolt, or v0) app a real &quot;what's on near me&quot; feed of concerts, trivia, readings and storytimes, with the API key kept server-side, in one prompt.</description><content:encoded><![CDATA[<p>Most “things to do near me” apps built with AI tools hit the same wall: the app looks great, but the events are made up, or scraped from a site that breaks next week. This guide wires a <a href="https://lovable.dev">Lovable</a> app to real, daily-updated event data from FindLocal: concerts, comedy, trivia nights, open mics, author readings and library storytimes in US metros and London. It takes about five minutes.</p>
<p>The same steps work in Bolt, v0, Replit or Cursor. Only the “where do I put the secret” step changes.</p>
<h2 id="1-get-a-free-api-key">1. Get a free API key</h2>
<p><a href="https://findlocal.community/signup?from=blog-lovable">Create a FindLocal account</a> and make a key on the dashboard. The free plan has no card. Calls per month are on the <a href="https://findlocal.community/pricing">pricing page</a>.</p>
<p>Keep the key secret. It goes in a server-side secret, never in browser code.</p>
<h2 id="2-store-the-key-as-a-secret">2. Store the key as a secret</h2>
<p>In Lovable, connect Supabase (Lovable’s built-in backend) and add a secret named <code>FINDLOCAL_KEY</code> with your key as the value. On other platforms, use the environment-variable or secrets panel for server code.</p>
<h2 id="3-paste-this-prompt">3. Paste this prompt</h2>
<p>Give Lovable this prompt as it is, and change the city if you like:</p>
<pre class="astro-code github-dark" style="background-color:#24292e;color:#e1e4e8; overflow-x: auto;" tabindex="0" data-language="text"><code><span class="line"><span>Add an "Events this week" page.</span></span>
<span class="line"><span></span></span>
<span class="line"><span>Create a Supabase Edge Function called `events` that calls</span></span>
<span class="line"><span>GET https://findlocal.community/api/events?city=austin&amp;when=week&amp;sort=featured</span></span>
<span class="line"><span>with the header `Authorization: Bearer ${FINDLOCAL_KEY}` (read FINDLOCAL_KEY from</span></span>
<span class="line"><span>the function's secrets — never expose it to the browser). Accept optional `city`,</span></span>
<span class="line"><span>`when` and `cat` query params and pass them through. Return the JSON unchanged.</span></span>
<span class="line"><span>Cache the response for 10 minutes.</span></span>
<span class="line"><span></span></span>
<span class="line"><span>On the page, call that function and render `data` as a responsive card grid:</span></span>
<span class="line"><span>image_url (hide if null), title, event_date + start_time, venue_name, price,</span></span>
<span class="line"><span>and a button linking to ticket_page_url (fall back to detail_page_url).</span></span>
<span class="line"><span>Add filter chips for when = today | weekend | week and cat = music | comedy |</span></span>
<span class="line"><span>trivia | family | literary. Show "Event data by FindLocal" linking to</span></span>
<span class="line"><span>https://findlocal.community in the page footer.</span></span></code></pre>
<p>That’s all of it. Lovable writes the function, the page and the filters.</p>
<h2 id="what-the-api-returns">What the API returns</h2>
<p><code>/api/events</code> returns <code>{ data: [...], meta: {...} }</code>. Each event is flat JSON:</p>
<pre class="astro-code github-dark" style="background-color:#24292e;color:#e1e4e8; overflow-x: auto;" tabindex="0" data-language="json"><code><span class="line"><span style="color:#E1E4E8">{</span></span>
<span class="line"><span style="color:#79B8FF">  "id"</span><span style="color:#E1E4E8">: </span><span style="color:#9ECBFF">"…"</span><span style="color:#E1E4E8">,</span></span>
<span class="line"><span style="color:#79B8FF">  "title"</span><span style="color:#E1E4E8">: </span><span style="color:#9ECBFF">"Tuesday Trivia"</span><span style="color:#E1E4E8">,</span></span>
<span class="line"><span style="color:#79B8FF">  "event_date"</span><span style="color:#E1E4E8">: </span><span style="color:#9ECBFF">"2026-10-27"</span><span style="color:#E1E4E8">,</span></span>
<span class="line"><span style="color:#79B8FF">  "start_time"</span><span style="color:#E1E4E8">: </span><span style="color:#9ECBFF">"19:30"</span><span style="color:#E1E4E8">,</span></span>
<span class="line"><span style="color:#79B8FF">  "category"</span><span style="color:#E1E4E8">: </span><span style="color:#9ECBFF">"trivia"</span><span style="color:#E1E4E8">,</span></span>
<span class="line"><span style="color:#79B8FF">  "price"</span><span style="color:#E1E4E8">: </span><span style="color:#9ECBFF">"Free"</span><span style="color:#E1E4E8">,</span></span>
<span class="line"><span style="color:#79B8FF">  "venue_name"</span><span style="color:#E1E4E8">: </span><span style="color:#9ECBFF">"…"</span><span style="color:#E1E4E8">,</span></span>
<span class="line"><span style="color:#79B8FF">  "venue_lat"</span><span style="color:#E1E4E8">: </span><span style="color:#79B8FF">30.26</span><span style="color:#E1E4E8">,</span></span>
<span class="line"><span style="color:#79B8FF">  "venue_lng"</span><span style="color:#E1E4E8">: </span><span style="color:#79B8FF">-97.74</span><span style="color:#E1E4E8">,</span></span>
<span class="line"><span style="color:#79B8FF">  "image_url"</span><span style="color:#E1E4E8">: </span><span style="color:#9ECBFF">"https://…"</span><span style="color:#E1E4E8">,</span></span>
<span class="line"><span style="color:#79B8FF">  "ticket_page_url"</span><span style="color:#E1E4E8">: </span><span style="color:#9ECBFF">"https://…"</span></span>
<span class="line"><span style="color:#E1E4E8">}</span></span></code></pre>
<p>Dates and times are in the venue’s own time zone, so you never have to convert them. The full field list and every filter are in the <a href="https://findlocal.community/docs">docs</a>, and you can try queries there without a key.</p>
<h2 id="useful-variations">Useful variations</h2>
<ul>
<li><strong>Near the user:</strong> replace <code>city=</code> with <code>near=&lt;lat&gt;,&lt;lng&gt;&amp;radius_km=10</code> to sort by distance from the browser’s location.</li>
<li><strong>Only free events:</strong> add <code>free=1</code>.</li>
<li><strong>Search:</strong> <code>q=jazz</code> matches titles, venues, performers and descriptions.</li>
<li><strong>One category:</strong> <code>cat=comedy</code> or <code>cat=literary</code> (bookstores and libraries).</li>
</ul>
<h2 id="things-that-commonly-go-wrong">Things that commonly go wrong</h2>
<ul>
<li><strong>The key ends up in the browser.</strong> If the AI tool puts the fetch in a React component, ask it to move the call into the Edge Function. Anyone can read a key that ships to the browser.</li>
<li><strong>Calling on every render.</strong> Cache in the function (the prompt asks for 10 minutes). Listings refresh daily, so you don’t need anything fresher.</li>
<li><strong>Credit line.</strong> On the Free plan, keep the “Event data by FindLocal” link visible where the events appear (see the <a href="https://findlocal.community/terms#api">API terms</a>). Paid plans don’t need it.</li>
</ul>
<h2 id="no-backend-at-all-use-the-widget">No backend at all? Use the widget</h2>
<p>If you just want events on a page and don’t need your own design, the <a href="https://findlocal.community/widgets">FindLocal widget</a> is one script tag with no key. It gives you a list, calendar and map with filters, and you can paste it into any site builder that accepts HTML.</p>
<h2 id="building-an-agent-instead">Building an agent instead?</h2>
<p>The same key works with the <a href="https://findlocal.community/mcp">FindLocal MCP server</a>, so Claude, Cursor or any MCP client can search events directly.</p>
]]></content:encoded></item>
<item><title>Put Live Local Events on Your Site: FindLocal Widgets, and Every Other Way to Get Our Data</title><link>https://findlocal.community/blog/findlocal-widgets-and-sharing-data</link><guid isPermaLink="true">https://findlocal.community/blog/findlocal-widgets-and-sharing-data</guid><pubDate>Sun, 06 Sep 2026 00:00:00 GMT</pubDate><description>A single script tag now puts a live list, calendar and map of local events on any web page — starting with Literary New England. Here's the widget, and the API and MCP doors that sit beside it.</description><content:encoded><![CDATA[<p>Find Local started as a website: one place to see what’s happening in your city, pulled straight from venue calendars instead of whatever an algorithm decided to show you. That’s still the heart of it. But a feed of clean, current local events is useful in a lot more places than our own pages, and over the past month we’ve been opening doors so the data can go where people already are.</p>
<p>Today there are four:</p>
<table>
<thead>
<tr>
<th>Door</th>
<th>Best for</th>
<th>Where to start</th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>The site</strong></td>
<td>Browsing, saving, sharing</td>
<td><a href="https://findlocal.community/">findlocal.community</a></td>
</tr>
<tr>
<td><strong>JSON API</strong></td>
<td>Apps, newsletters, dashboards, scripts</td>
<td><a href="https://findlocal.community/docs">/docs</a></td>
</tr>
<tr>
<td><strong>MCP server</strong></td>
<td>Claude, Cursor and other AI assistants</td>
<td><a href="https://findlocal.community/mcp">/mcp</a></td>
</tr>
<tr>
<td><strong>Widgets</strong> (new)</td>
<td>Any web page, no code</td>
<td><a href="https://findlocal.community/widgets">/widgets</a></td>
</tr>
</tbody>
</table>
<p>All four read the same database, so a bookstore’s widget, a newsletter’s API call and an assistant’s tool result always agree.</p>
<h2 id="the-widget">The widget</h2>
<p>Paste one line where you want the calendar:</p>
<pre class="astro-code github-dark" style="background-color:#24292e;color:#e1e4e8; overflow-x: auto;" tabindex="0" data-language="html"><code><span class="line"><span style="color:#E1E4E8">&lt;</span><span style="color:#85E89D">script</span><span style="color:#B392F0"> src</span><span style="color:#E1E4E8">=</span><span style="color:#9ECBFF">"https://findlocal.community/widget.js"</span><span style="color:#B392F0"> data-widget</span><span style="color:#E1E4E8">=</span><span style="color:#9ECBFF">"literary-new-england"</span><span style="color:#E1E4E8">&gt;&lt;/</span><span style="color:#85E89D">script</span><span style="color:#E1E4E8">&gt;</span></span></code></pre>
<p>That’s it. The tag inserts a small frame that shows upcoming events three ways — a date-grouped <strong>list</strong>, a month <strong>calendar</strong> you can click through, and a <strong>map</strong> of the venues — with a “Powered by FindLocal” credit at the bottom. It sizes itself to its content, follows your visitor’s light or dark setting, works in a sidebar or full width, and every event links back to its page on Find Local (and from there to the venue’s own listing or ticket page).</p>
<p>There’s no code to maintain and nothing to update. As venues change their calendars and our scrapers pick the changes up, the widget changes with them.</p>
<h2 id="why-literary-new-england-first">Why Literary New England first</h2>
<p>This summer we onboarded nearly three hundred literary venues across New England — independent bookstores, public libraries, writing centers and literary organizations — in eighteen metro areas from Stamford to Bangor, and gave their events their own <code>literary</code> category: author talks, readings, book launches, book clubs, poetry, storytelling, workshops.</p>
<p>It was the obvious first widget for two reasons. First, the audience is real and underserved: the people who go to a Tuesday-night reading at a bookstore in Northampton find out about it from a chalkboard, a newsletter or a friend, not from a ticketing aggregator. Second, these venues are exactly the kind of organizations that should be able to show “what’s happening around here” on their own site without hiring a developer. A library can now put the whole region’s literary calendar on its events page, and a bookstore blog can show what’s on across the state next to its own listings.</p>
<p>“New England” isn’t a thing our database knew about — events belong to one metro partition each. So the widget introduces <strong>region groups</strong>: named bundles of metros that a widget can query at once. <code>new-england</code> is the first; others are a one-line change, so tell us which you’d like.</p>
<h2 id="build-your-own">Build your own</h2>
<p>The preset is one of many combinations. Every widget takes a scope and, optionally, a category, a date window, an initial view and a theme:</p>
<pre class="astro-code github-dark" style="background-color:#24292e;color:#e1e4e8; overflow-x: auto;" tabindex="0" data-language="html"><code><span class="line"><span style="color:#6A737D">&lt;!-- Comedy in Chicago this weekend, map first, dark --&gt;</span></span>
<span class="line"><span style="color:#E1E4E8">&lt;</span><span style="color:#85E89D">script</span><span style="color:#B392F0"> src</span><span style="color:#E1E4E8">=</span><span style="color:#9ECBFF">"https://findlocal.community/widget.js"</span></span>
<span class="line"><span style="color:#B392F0">  data-city</span><span style="color:#E1E4E8">=</span><span style="color:#9ECBFF">"chicago"</span><span style="color:#B392F0"> data-cat</span><span style="color:#E1E4E8">=</span><span style="color:#9ECBFF">"comedy"</span><span style="color:#B392F0"> data-when</span><span style="color:#E1E4E8">=</span><span style="color:#9ECBFF">"weekend"</span></span>
<span class="line"><span style="color:#B392F0">  data-view</span><span style="color:#E1E4E8">=</span><span style="color:#9ECBFF">"map"</span><span style="color:#B392F0"> data-theme</span><span style="color:#E1E4E8">=</span><span style="color:#9ECBFF">"dark"</span><span style="color:#E1E4E8">&gt;&lt;/</span><span style="color:#85E89D">script</span><span style="color:#E1E4E8">&gt;</span></span></code></pre>
<p>The <a href="https://findlocal.community/widgets">widget page</a> has a builder that writes the tag for you and shows a live preview, plus the full attribute reference. If you want to see which of your readers click through, add <code>data-partner="your-site"</code> and it rides along on every link as a UTM parameter.</p>
<h2 id="the-other-doors-briefly">The other doors, briefly</h2>
<p><strong>The JSON API</strong> is the same data as plain HTTPS: <code>GET https://findlocal.community/api/events?city=boston&amp;when=weekend&amp;cat=music</code>. It needs an API key — there’s <a href="https://findlocal.community/pricing">a free tier</a>, no card — sent as <code>Authorization: Bearer &lt;key&gt;</code>. CORS open, cached for five minutes at the edge, and every filter the site has is a query parameter. You can run real queries without a key in the <a href="https://findlocal.community/docs#playground">playground</a>. <a href="https://findlocal.community/docs">Reference</a> · <a href="https://findlocal.community/blog/findlocal-events-api">walkthrough</a>.</p>
<p><strong>The MCP server</strong> at <code>https://mcp.findlocal.community/mcp</code> gives an assistant nine tools — search events (by performer too), look up a venue, list categories, check usage and so on — so “anything free in Cambridge tonight?” gets a sourced answer with links instead of a confident guess. It uses OAuth plus the same API key as the JSON API, free tier included. <a href="https://findlocal.community/mcp">Reference</a> · <a href="https://findlocal.community/blog/findlocal-mcp-server">walkthrough</a>.</p>
<p>And if you’re a team evaluating the data rather than a person embedding a calendar, the <a href="https://findlocal.community/">home page</a> and the <a href="https://findlocal.community/compare">comparison</a> are the short version of why it’s different: aggregated across sources, structured, and kept current, with the long tail of venue-site events the big platforms never see.</p>
<h2 id="whats-next">What’s next</h2>
<ul>
<li>More presets: per-city “this weekend” widgets, a single-venue widget for venues that want their own calendar on their own site, and category widgets for the parks and outdoors events we added earlier this year.</li>
<li>More region groups as people ask for them.</li>
<li>A way for widget partners to see their own referral numbers without emailing us.</li>
</ul>
<p>If you put a widget somewhere, we’d love to see it — <a href="mailto:elliot@findlocal.community">elliot@findlocal.community</a>. And if there’s a door you need that isn’t here yet, say so. The whole point is that the data should be able to go wherever local events are actually discovered.</p>
]]></content:encoded></item>
<item><title>How to Use the FindLocal Events API</title><link>https://findlocal.community/blog/findlocal-events-api</link><guid isPermaLink="true">https://findlocal.community/blog/findlocal-events-api</guid><pubDate>Fri, 04 Sep 2026 00:00:00 GMT</pubDate><description>A JSON API (free tier plus paid plans, one key) for every upcoming event and venue FindLocal tracks across 80+ metros in the US and the UK. Endpoints, filters, response shapes, and examples in curl, JavaScript, and Python.</description><content:encoded><![CDATA[<blockquote>
<p><strong>Reference:</strong> the up-to-date endpoint, parameter and field tables now live at <a href="https://findlocal.community/docs">/docs</a>. This post is the walkthrough.</p>
</blockquote>
<blockquote>
<p><strong>Update:</strong> the JSON API now requires an API key — send it as an <code>Authorization: Bearer &lt;key&gt;</code> header. There’s a free tier; get a key at <a href="https://findlocal.community/pricing">/pricing</a>. The embeddable widgets and the map endpoint stay free and keyless.</p>
</blockquote>
<p>Every listing page on Find Local has a JSON twin. The same filters you click on the site — city, date, category, price, time of day, neighborhood, performer, search — work as query parameters against <code>https://findlocal.community/api/events</code>, and the response is the same data the page renders. It requires an API key (there’s a free tier, no card — <a href="https://findlocal.community/pricing">plans and quotas at /pricing</a>), sent as an <code>Authorization: Bearer &lt;key&gt;</code> header, and CORS is open, so you can call it from a browser, a script, a spreadsheet, or a cron job.</p>
<p>If you’d rather have an AI assistant do the querying, see the companion guide on <a href="https://findlocal.community/blog/findlocal-mcp-server">connecting FindLocal to Claude, Cursor, and other assistants over MCP</a>.</p>
<h2 id="endpoints">Endpoints</h2>
<table>
<thead>
<tr>
<th>Endpoint</th>
<th>Returns</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>GET /api/events</code></td>
<td>Upcoming events in a city, filtered and paginated</td>
</tr>
<tr>
<td><code>GET /api/events/&lt;uuid&gt;</code></td>
<td>One event, including past and delisted ones</td>
</tr>
<tr>
<td><code>GET /api/venues</code></td>
<td>Active venues in a city with upcoming-event counts</td>
</tr>
</tbody>
</table>
<p>Base URL: <code>https://findlocal.community</code>. Only <code>GET</code> (and <code>OPTIONS</code>) are supported.</p>
<h2 id="quick-start">Quick start</h2>
<pre class="astro-code github-dark" style="background-color:#24292e;color:#e1e4e8; overflow-x: auto;" tabindex="0" data-language="bash"><code><span class="line"><span style="color:#6A737D"># Live music in Boston this week</span></span>
<span class="line"><span style="color:#B392F0">curl</span><span style="color:#9ECBFF"> 'https://findlocal.community/api/events?city=boston&amp;cat=music&amp;when=week&amp;limit=5'</span></span>
<span class="line"></span>
<span class="line"><span style="color:#6A737D"># Free things to do in Brooklyn this weekend, evenings only</span></span>
<span class="line"><span style="color:#B392F0">curl</span><span style="color:#9ECBFF"> 'https://findlocal.community/api/events?city=new-york&amp;region=Brooklyn&amp;when=weekend&amp;free=1&amp;tod=evening'</span></span>
<span class="line"></span>
<span class="line"><span style="color:#6A737D"># Every active venue in Chicago</span></span>
<span class="line"><span style="color:#B392F0">curl</span><span style="color:#9ECBFF"> 'https://findlocal.community/api/venues?city=chicago'</span></span></code></pre>
<h2 id="filtering-apievents">Filtering <code>/api/events</code></h2>
<p>The parameters mirror the site’s URLs exactly: <code>/city/boston?cat=music&amp;when=weekend</code> on the site is <code>/api/events?city=boston&amp;cat=music&amp;when=weekend</code> on the API.</p>
<table>
<thead>
<tr>
<th>Parameter</th>
<th>Values</th>
<th>Notes</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>city</code></td>
<td>Name or slug: <code>Boston</code>, <code>new-york</code>, <code>los-angeles</code></td>
<td>Defaults to Boston. See <a href="https://findlocal.community/llms.txt">the city list</a>.</td>
</tr>
<tr>
<td><code>when</code></td>
<td><code>anytime</code> · <code>today</code> · <code>tomorrow</code> · <code>weekend</code> · <code>week</code> · <code>YYYY-MM-DD</code></td>
<td>Resolved in the city’s time zone. <code>weekend</code> is the upcoming Fri–Sun, <code>week</code> the next 7 days. Default <code>anytime</code> (everything upcoming).</td>
</tr>
<tr>
<td><code>cat</code></td>
<td>Comma list of slugs, or repeated (<code>cat=music&amp;cat=comedy</code>)</td>
<td><code>music</code>, <code>comedy</code>, <code>theater</code>, <code>dance</code>, <code>art</code>, <code>food_drink</code>, <code>family</code>, <code>market</code>, <code>workshop</code>, <code>fitness</code>, <code>nightlife</code>, <code>community</code>, <code>festival</code>, <code>parks</code>, <code>literary</code>, <code>film</code>, <code>talks</code></td>
</tr>
<tr>
<td><code>free</code></td>
<td><code>1</code></td>
<td>Only free events ($0 or labelled free)</td>
</tr>
<tr>
<td><code>paid</code></td>
<td><code>1</code></td>
<td>Only ticketed events. <code>free=1&amp;paid=1</code> returns both.</td>
</tr>
<tr>
<td><code>max</code></td>
<td>Number (city’s local currency)</td>
<td>Max ticket price. Events without a parsed price are excluded.</td>
</tr>
<tr>
<td><code>tod</code></td>
<td>Comma list of <code>morning</code>, <code>afternoon</code>, <code>evening</code></td>
<td>Time of day of the start time</td>
</tr>
<tr>
<td><code>region</code></td>
<td>Borough / neighborhood label, e.g. <code>Brooklyn</code>, <code>Cambridge</code></td>
<td>Use <code>/api/venues</code> to see the labels a city uses</td>
</tr>
<tr>
<td><code>q</code></td>
<td>Free text, up to 100 chars</td>
<td>Matches event title, venue name and performer names</td>
</tr>
<tr>
<td><code>performer</code></td>
<td>Free text, up to 100 chars</td>
<td>Matches performer / author / instructor names only — e.g. every upcoming date for one band</td>
</tr>
<tr>
<td><code>authors</code></td>
<td><code>1</code></td>
<td>Only events with a known author on the bill (readings, signings, talks)</td>
</tr>
<tr>
<td><code>sort</code></td>
<td><code>date</code> · <code>featured</code></td>
<td><code>date</code> (default) is chronological; <code>featured</code> is the site’s editorial ranking</td>
</tr>
<tr>
<td><code>near</code></td>
<td><code>&lt;lat&gt;,&lt;lng&gt;</code></td>
<td>Proximity search around a point, across metro boundaries; orders by distance and overrides <code>sort</code></td>
</tr>
<tr>
<td><code>radius_km</code></td>
<td>1–200</td>
<td>Radius for <code>near</code> (default 25)</td>
</tr>
<tr>
<td><code>page</code></td>
<td>1-based</td>
<td>100 events per page by default</td>
</tr>
<tr>
<td><code>limit</code></td>
<td>1–500</td>
<td>Overrides the page size</td>
</tr>
<tr>
<td><code>venue</code></td>
<td>Venue UUID</td>
<td>Upcoming events at one venue</td>
</tr>
<tr>
<td><code>series_id</code></td>
<td>An event’s <code>series_id</code></td>
<td>Every upcoming occurrence of one series: each night of a residency, each week of a quiz</td>
</tr>
<tr>
<td><code>ids</code></td>
<td>Comma list of up to 200 event UUIDs</td>
<td>Bypasses all other filters and returns any date, including delisted events. Handy for re-checking a list of events you stored.</td>
</tr>
</tbody>
</table>
<p>Unknown values are ignored rather than rejected, so <code>cat=jazz</code> quietly matches nothing extra — check the response <code>meta.total</code> if a filter seems to have no effect.</p>
<h2 id="response-shape">Response shape</h2>
<pre class="astro-code github-dark" style="background-color:#24292e;color:#e1e4e8; overflow-x: auto;" tabindex="0" data-language="json"><code><span class="line"><span style="color:#E1E4E8">{</span></span>
<span class="line"><span style="color:#79B8FF">  "data"</span><span style="color:#E1E4E8">: [ </span><span style="color:#6A737D">/* EventRow[] */</span><span style="color:#E1E4E8"> ],</span></span>
<span class="line"><span style="color:#79B8FF">  "meta"</span><span style="color:#E1E4E8">: { </span><span style="color:#79B8FF">"city"</span><span style="color:#E1E4E8">: </span><span style="color:#9ECBFF">"Boston"</span><span style="color:#E1E4E8">, </span><span style="color:#79B8FF">"currency"</span><span style="color:#E1E4E8">: </span><span style="color:#9ECBFF">"USD"</span><span style="color:#E1E4E8">, </span><span style="color:#79B8FF">"count"</span><span style="color:#E1E4E8">: </span><span style="color:#79B8FF">5</span><span style="color:#E1E4E8">, </span><span style="color:#79B8FF">"total"</span><span style="color:#E1E4E8">: </span><span style="color:#79B8FF">82</span><span style="color:#E1E4E8">, </span><span style="color:#79B8FF">"page"</span><span style="color:#E1E4E8">: </span><span style="color:#79B8FF">1</span><span style="color:#E1E4E8">, </span><span style="color:#79B8FF">"page_size"</span><span style="color:#E1E4E8">: </span><span style="color:#79B8FF">5</span><span style="color:#E1E4E8">, </span><span style="color:#79B8FF">"sort"</span><span style="color:#E1E4E8">: </span><span style="color:#9ECBFF">"date"</span><span style="color:#E1E4E8"> }</span></span>
<span class="line"><span style="color:#E1E4E8">}</span></span></code></pre>
<p><code>total</code> is the full match count for the filters; <code>count</code> is how many rows are in this page; <code>currency</code> is the ISO code every <code>price_amount</code> in the page is in (<code>GBP</code> for London). <code>/api/events?ids=…</code> returns <code>meta: { count }</code> only, and <code>/api/events/&lt;uuid&gt;</code> returns <code>{ "data": {…} }</code> or a <code>404</code> with <code>{ "error": "not found" }</code>.</p>
<p>An event row looks like this (trimmed from a real response):</p>
<pre class="astro-code github-dark" style="background-color:#24292e;color:#e1e4e8; overflow-x: auto;" tabindex="0" data-language="json"><code><span class="line"><span style="color:#E1E4E8">{</span></span>
<span class="line"><span style="color:#79B8FF">  "id"</span><span style="color:#E1E4E8">: </span><span style="color:#9ECBFF">"8f9b9068-4e11-466b-a1cc-d36230d28fdd"</span><span style="color:#E1E4E8">,</span></span>
<span class="line"><span style="color:#79B8FF">  "title"</span><span style="color:#E1E4E8">: </span><span style="color:#9ECBFF">"Hooley Hour"</span><span style="color:#E1E4E8">,</span></span>
<span class="line"><span style="color:#79B8FF">  "description"</span><span style="color:#E1E4E8">: </span><span style="color:#9ECBFF">"donate to artists 5-7pm all ages"</span><span style="color:#E1E4E8">,</span></span>
<span class="line"><span style="color:#79B8FF">  "event_date"</span><span style="color:#E1E4E8">: </span><span style="color:#9ECBFF">"2026-09-04"</span><span style="color:#E1E4E8">,</span></span>
<span class="line"><span style="color:#79B8FF">  "start_time"</span><span style="color:#E1E4E8">: </span><span style="color:#9ECBFF">"17:00:00"</span><span style="color:#E1E4E8">,</span></span>
<span class="line"><span style="color:#79B8FF">  "end_time"</span><span style="color:#E1E4E8">: </span><span style="color:#79B8FF">null</span><span style="color:#E1E4E8">,</span></span>
<span class="line"><span style="color:#79B8FF">  "city"</span><span style="color:#E1E4E8">: </span><span style="color:#9ECBFF">"Boston"</span><span style="color:#E1E4E8">,</span></span>
<span class="line"><span style="color:#79B8FF">  "region"</span><span style="color:#E1E4E8">: </span><span style="color:#9ECBFF">"Cambridge"</span><span style="color:#E1E4E8">,</span></span>
<span class="line"><span style="color:#79B8FF">  "category"</span><span style="color:#E1E4E8">: </span><span style="color:#9ECBFF">"music"</span><span style="color:#E1E4E8">,</span></span>
<span class="line"><span style="color:#79B8FF">  "event_type"</span><span style="color:#E1E4E8">: [</span><span style="color:#9ECBFF">"Theater"</span><span style="color:#E1E4E8">, </span><span style="color:#9ECBFF">"Music"</span><span style="color:#E1E4E8">],</span></span>
<span class="line"><span style="color:#79B8FF">  "performers"</span><span style="color:#E1E4E8">: [{ </span><span style="color:#79B8FF">"name"</span><span style="color:#E1E4E8">: </span><span style="color:#9ECBFF">"The Hooley Band"</span><span style="color:#E1E4E8">, </span><span style="color:#79B8FF">"role"</span><span style="color:#E1E4E8">: </span><span style="color:#9ECBFF">"headliner"</span><span style="color:#E1E4E8"> }],</span></span>
<span class="line"><span style="color:#79B8FF">  "price"</span><span style="color:#E1E4E8">: </span><span style="color:#79B8FF">null</span><span style="color:#E1E4E8">,</span></span>
<span class="line"><span style="color:#79B8FF">  "price_amount"</span><span style="color:#E1E4E8">: </span><span style="color:#79B8FF">null</span><span style="color:#E1E4E8">,</span></span>
<span class="line"><span style="color:#79B8FF">  "detail_page_url"</span><span style="color:#E1E4E8">: </span><span style="color:#9ECBFF">"https://www.lilypadinman.com/home/2026/hooley-hour-bs5y2-pl4db9"</span><span style="color:#E1E4E8">,</span></span>
<span class="line"><span style="color:#79B8FF">  "ticket_page_url"</span><span style="color:#E1E4E8">: </span><span style="color:#79B8FF">null</span><span style="color:#E1E4E8">,</span></span>
<span class="line"><span style="color:#79B8FF">  "image_url"</span><span style="color:#E1E4E8">: </span><span style="color:#9ECBFF">"https://images.squarespace-cdn.com/…/1000016764.jpg"</span><span style="color:#E1E4E8">,</span></span>
<span class="line"><span style="color:#79B8FF">  "is_deleted"</span><span style="color:#E1E4E8">: </span><span style="color:#79B8FF">0</span><span style="color:#E1E4E8">,</span></span>
<span class="line"><span style="color:#79B8FF">  "venue_id"</span><span style="color:#E1E4E8">: </span><span style="color:#9ECBFF">"b7716a13-e708-4573-8445-ea786a47233e"</span><span style="color:#E1E4E8">,</span></span>
<span class="line"><span style="color:#79B8FF">  "venue_name"</span><span style="color:#E1E4E8">: </span><span style="color:#9ECBFF">"The Lilypad"</span><span style="color:#E1E4E8">,</span></span>
<span class="line"><span style="color:#79B8FF">  "venue_address"</span><span style="color:#E1E4E8">: </span><span style="color:#9ECBFF">"1353 Cambridge St, Cambridge, MA 02139"</span><span style="color:#E1E4E8">,</span></span>
<span class="line"><span style="color:#79B8FF">  "venue_lat"</span><span style="color:#E1E4E8">: </span><span style="color:#79B8FF">42.3738079</span><span style="color:#E1E4E8">,</span></span>
<span class="line"><span style="color:#79B8FF">  "venue_lng"</span><span style="color:#E1E4E8">: </span><span style="color:#79B8FF">-71.100088</span><span style="color:#E1E4E8">,</span></span>
<span class="line"><span style="color:#79B8FF">  "venue_url"</span><span style="color:#E1E4E8">: </span><span style="color:#9ECBFF">"https://www.lilypadinman.com/"</span><span style="color:#E1E4E8">,</span></span>
<span class="line"><span style="color:#79B8FF">  "venue_type"</span><span style="color:#E1E4E8">: </span><span style="color:#9ECBFF">"Music Venue"</span><span style="color:#E1E4E8">,</span></span>
<span class="line"><span style="color:#79B8FF">  "venue_region"</span><span style="color:#E1E4E8">: </span><span style="color:#9ECBFF">"Cambridge"</span><span style="color:#E1E4E8">,</span></span>
<span class="line"><span style="color:#79B8FF">  "series_count"</span><span style="color:#E1E4E8">: </span><span style="color:#79B8FF">4</span><span style="color:#E1E4E8">,</span></span>
<span class="line"><span style="color:#79B8FF">  "series_image"</span><span style="color:#E1E4E8">: </span><span style="color:#9ECBFF">"https://images.squarespace-cdn.com/…/1000016764.jpg"</span><span style="color:#E1E4E8">,</span></span>
<span class="line"><span style="color:#79B8FF">  "source"</span><span style="color:#E1E4E8">: </span><span style="color:#9ECBFF">"scraper_local"</span><span style="color:#E1E4E8">,</span></span>
<span class="line"><span style="color:#79B8FF">  "first_seen_at"</span><span style="color:#E1E4E8">: </span><span style="color:#9ECBFF">"2026-07-03T06:20:36.366Z"</span><span style="color:#E1E4E8">,</span></span>
<span class="line"><span style="color:#79B8FF">  "last_seen_at"</span><span style="color:#E1E4E8">: </span><span style="color:#9ECBFF">"2026-08-07T07:23:34.117Z"</span><span style="color:#E1E4E8">,</span></span>
<span class="line"><span style="color:#79B8FF">  "updated_at"</span><span style="color:#E1E4E8">: </span><span style="color:#9ECBFF">"2026-09-04T23:17:55.599Z"</span></span>
<span class="line"><span style="color:#E1E4E8">}</span></span></code></pre>
<p>Things worth knowing about the fields:</p>
<ul>
<li><strong><code>event_date</code> is a plain calendar day</strong> in the venue’s local time zone. Don’t <code>new Date()</code> it — that would shift it by your UTC offset. Combine it with <code>start_time</code> (24-hour <code>HH:MM:SS</code>, may be <code>null</code>) if you need a timestamp.</li>
<li><strong><code>price</code> is the raw label</strong> from the venue (“$15 adv / $20 door”, “Free”, “Donation”); <strong><code>price_amount</code></strong> is our best parsed number in the city’s local currency (USD in the US, GBP in London), or <code>null</code> when we couldn’t parse one. <code>free=1</code> uses both.</li>
<li><strong><code>category</code></strong> is one of the slugs above; <strong><code>event_type</code></strong> is the venue’s own genre tags.</li>
<li><strong><code>performers</code></strong> lists who the event is by — the bill, authors, instructors, speakers — each with a <code>role</code> (<code>headliner</code>, <code>support</code>, <code>author</code>, <code>speaker</code>, <code>dj</code>…). It’s empty when the venue doesn’t say. Search it with <code>performer=</code>.</li>
<li>Single-event responses (<code>/api/events/&lt;uuid&gt;</code>) also carry <strong><code>books</code></strong> and <strong><code>authors</code></strong> for literary events: titles, ISBNs, covers, author bios and photos.</li>
<li><strong><code>series_count</code> &gt; 1</strong> means the same title has that many upcoming dates at this venue (a weekly trivia night, a theater run). <code>series_image</code> is the first image found in that series. <strong><code>series_id</code></strong> is the stable id of that series; pass it as <code>series_id=</code> to list every date.</li>
<li><strong><code>end_date</code></strong> is set on a multi-day run stored as one event (an exhibition, festival or trade show): <code>event_date</code> is the first day, <code>end_date</code> the last. A run that opened before today stays in <code>/api/events</code> until its <code>end_date</code>. Runs listed performance by performance are separate events sharing a <code>series_id</code> instead.</li>
<li><strong><code>organizer</code></strong> names who puts the event on when that isn’t the venue (a talk series, promoter, festival or council programme). The <code>venue_*</code> fields always describe where it happens.</li>
<li><strong><code>duplicate_of</code></strong>: when the same show is listed under two venues we keep one. The other is never in lists; by id or in an <code>updated_since</code> sync it comes back with <code>is_deleted: 1</code> and <code>duplicate_of</code> set to the event we kept.</li>
<li><strong><code>is_deleted: 1</code></strong> means the venue stopped listing the event (or it is a cross-venue duplicate, see <code>duplicate_of</code>). <code>/api/events</code> never returns these; <code>/api/events/&lt;uuid&gt;</code> and <code>ids=</code> do, so you can render an honest “no longer listed” state.</li>
<li><strong>Booleans are <code>0</code>/<code>1</code></strong>, straight from the database.</li>
<li>The public page for any event is <code>https://findlocal.community/event/&lt;id&gt;</code>, and an iCalendar file is at <code>https://findlocal.community/event/&lt;id&gt;/calendar.ics</code>.</li>
</ul>
<p>A venue row from <code>/api/venues</code>:</p>
<pre class="astro-code github-dark" style="background-color:#24292e;color:#e1e4e8; overflow-x: auto;" tabindex="0" data-language="json"><code><span class="line"><span style="color:#E1E4E8">{</span></span>
<span class="line"><span style="color:#79B8FF">  "id"</span><span style="color:#E1E4E8">: </span><span style="color:#9ECBFF">"d21997e7-3a40-4863-8ef7-ad0227d80093"</span><span style="color:#E1E4E8">,</span></span>
<span class="line"><span style="color:#79B8FF">  "name"</span><span style="color:#E1E4E8">: </span><span style="color:#9ECBFF">"Agganis Arena"</span><span style="color:#E1E4E8">,</span></span>
<span class="line"><span style="color:#79B8FF">  "city"</span><span style="color:#E1E4E8">: </span><span style="color:#9ECBFF">"Boston"</span><span style="color:#E1E4E8">,</span></span>
<span class="line"><span style="color:#79B8FF">  "region"</span><span style="color:#E1E4E8">: </span><span style="color:#9ECBFF">"Boston"</span><span style="color:#E1E4E8">,</span></span>
<span class="line"><span style="color:#79B8FF">  "address"</span><span style="color:#E1E4E8">: </span><span style="color:#9ECBFF">"925 Commonwealth Ave, Boston, MA 02215"</span><span style="color:#E1E4E8">,</span></span>
<span class="line"><span style="color:#79B8FF">  "url"</span><span style="color:#E1E4E8">: </span><span style="color:#9ECBFF">"https://www.agganisarena.com/"</span><span style="color:#E1E4E8">,</span></span>
<span class="line"><span style="color:#79B8FF">  "description"</span><span style="color:#E1E4E8">: </span><span style="color:#9ECBFF">"Agganis Arena is a versatile venue hosting sports, concerts, and events."</span><span style="color:#E1E4E8">,</span></span>
<span class="line"><span style="color:#79B8FF">  "image"</span><span style="color:#E1E4E8">: </span><span style="color:#9ECBFF">"https://img.findlocal.community/venues/d21997e7-3a40-4863-8ef7-ad0227d80093.jpg"</span><span style="color:#E1E4E8">,</span></span>
<span class="line"><span style="color:#79B8FF">  "image_attribution"</span><span style="color:#E1E4E8">: </span><span style="color:#9ECBFF">"</span><span style="color:#79B8FF">\"</span><span style="color:#9ECBFF">Agganis Arena Exterior</span><span style="color:#79B8FF">\"</span><span style="color:#9ECBFF"> by …, CC BY-SA 4.0 (https://commons.wikimedia.org/…)"</span><span style="color:#E1E4E8">,</span></span>
<span class="line"><span style="color:#79B8FF">  "image_source"</span><span style="color:#E1E4E8">: </span><span style="color:#9ECBFF">"openverse"</span><span style="color:#E1E4E8">,</span></span>
<span class="line"><span style="color:#79B8FF">  "type"</span><span style="color:#E1E4E8">: </span><span style="color:#9ECBFF">"Arena &amp; Stadium"</span><span style="color:#E1E4E8">,</span></span>
<span class="line"><span style="color:#79B8FF">  "venue_size"</span><span style="color:#E1E4E8">: </span><span style="color:#9ECBFF">"Large"</span><span style="color:#E1E4E8">,</span></span>
<span class="line"><span style="color:#79B8FF">  "capacity"</span><span style="color:#E1E4E8">: </span><span style="color:#79B8FF">7200</span><span style="color:#E1E4E8">,</span></span>
<span class="line"><span style="color:#79B8FF">  "categories"</span><span style="color:#E1E4E8">: [</span><span style="color:#9ECBFF">"music"</span><span style="color:#E1E4E8">],</span></span>
<span class="line"><span style="color:#79B8FF">  "latitude"</span><span style="color:#E1E4E8">: </span><span style="color:#79B8FF">42.3514544</span><span style="color:#E1E4E8">,</span></span>
<span class="line"><span style="color:#79B8FF">  "longitude"</span><span style="color:#E1E4E8">: </span><span style="color:#79B8FF">-71.1176226</span><span style="color:#E1E4E8">,</span></span>
<span class="line"><span style="color:#79B8FF">  "is_active"</span><span style="color:#E1E4E8">: </span><span style="color:#79B8FF">1</span><span style="color:#E1E4E8">,</span></span>
<span class="line"><span style="color:#79B8FF">  "upcoming"</span><span style="color:#E1E4E8">: </span><span style="color:#79B8FF">7</span></span>
<span class="line"><span style="color:#E1E4E8">}</span></span></code></pre>
<p><code>/api/venues</code> accepts <code>city</code> and optional <code>region</code>, <code>type</code>, <code>q</code> (name search) and <code>sort</code> (<code>name</code> or <code>upcoming</code>). About the venue fields:</p>
<ul>
<li><strong><code>type</code></strong> is one of a fixed list: Music Venue, Performing Arts Center, Theater, Comedy Club, Bar, Nightclub, Brewery &amp; Winery, Restaurant, Cafe, Bookstore, Library, Museum, Art Gallery, University &amp; College, Arena &amp; Stadium, Park &amp; Outdoors, Community Center, Place of Worship, Market, Festival Grounds, Other.</li>
<li><strong><code>capacity</code></strong> is the maximum number of people when a source states one (Wikidata, the venue’s own site, a venue directory), else <code>null</code>. <strong><code>venue_size</code></strong> is Small (under 100), Medium (100-499) or Large (500+); it comes from <code>capacity</code> when known and is an estimate otherwise.</li>
<li><strong><code>image_attribution</code></strong>, when present, is the credit line the image’s Creative Commons license requires. Show it next to the image.</li>
</ul>
<p>The public venue page is <code>https://findlocal.community/venue/&lt;id&gt;</code>.</p>
<h2 id="examples">Examples</h2>
<h3 id="javascript-browser-or-node">JavaScript (browser or Node)</h3>
<pre class="astro-code github-dark" style="background-color:#24292e;color:#e1e4e8; overflow-x: auto;" tabindex="0" data-language="js"><code><span class="line"><span style="color:#F97583">const</span><span style="color:#79B8FF"> params</span><span style="color:#F97583"> =</span><span style="color:#F97583"> new</span><span style="color:#B392F0"> URLSearchParams</span><span style="color:#E1E4E8">({ city: </span><span style="color:#9ECBFF">'seattle'</span><span style="color:#E1E4E8">, when: </span><span style="color:#9ECBFF">'weekend'</span><span style="color:#E1E4E8">, cat: </span><span style="color:#9ECBFF">'comedy,music'</span><span style="color:#E1E4E8">, limit: </span><span style="color:#9ECBFF">'50'</span><span style="color:#E1E4E8"> });</span></span>
<span class="line"><span style="color:#F97583">const</span><span style="color:#79B8FF"> res</span><span style="color:#F97583"> =</span><span style="color:#F97583"> await</span><span style="color:#B392F0"> fetch</span><span style="color:#E1E4E8">(</span><span style="color:#9ECBFF">`https://findlocal.community/api/events?${</span><span style="color:#E1E4E8">params</span><span style="color:#9ECBFF">}`</span><span style="color:#E1E4E8">);</span></span>
<span class="line"><span style="color:#F97583">const</span><span style="color:#E1E4E8"> { </span><span style="color:#79B8FF">data</span><span style="color:#E1E4E8">, </span><span style="color:#79B8FF">meta</span><span style="color:#E1E4E8"> } </span><span style="color:#F97583">=</span><span style="color:#F97583"> await</span><span style="color:#E1E4E8"> res.</span><span style="color:#B392F0">json</span><span style="color:#E1E4E8">();</span></span>
<span class="line"></span>
<span class="line"><span style="color:#E1E4E8">console.</span><span style="color:#B392F0">log</span><span style="color:#E1E4E8">(</span><span style="color:#9ECBFF">`${</span><span style="color:#E1E4E8">meta</span><span style="color:#9ECBFF">.</span><span style="color:#E1E4E8">total</span><span style="color:#9ECBFF">} events this weekend`</span><span style="color:#E1E4E8">);</span></span>
<span class="line"><span style="color:#F97583">for</span><span style="color:#E1E4E8"> (</span><span style="color:#F97583">const</span><span style="color:#79B8FF"> e</span><span style="color:#F97583"> of</span><span style="color:#E1E4E8"> data) {</span></span>
<span class="line"><span style="color:#E1E4E8">  console.</span><span style="color:#B392F0">log</span><span style="color:#E1E4E8">(</span><span style="color:#9ECBFF">`${</span><span style="color:#E1E4E8">e</span><span style="color:#9ECBFF">.</span><span style="color:#E1E4E8">event_date</span><span style="color:#9ECBFF">} ${</span><span style="color:#E1E4E8">e</span><span style="color:#9ECBFF">.</span><span style="color:#E1E4E8">start_time</span><span style="color:#F97583"> ??</span><span style="color:#9ECBFF"> ''} · ${</span><span style="color:#E1E4E8">e</span><span style="color:#9ECBFF">.</span><span style="color:#E1E4E8">title</span><span style="color:#9ECBFF">} @ ${</span><span style="color:#E1E4E8">e</span><span style="color:#9ECBFF">.</span><span style="color:#E1E4E8">venue_name</span><span style="color:#9ECBFF">}`</span><span style="color:#E1E4E8">);</span></span>
<span class="line"><span style="color:#E1E4E8">}</span></span></code></pre>
<h3 id="python">Python</h3>
<pre class="astro-code github-dark" style="background-color:#24292e;color:#e1e4e8; overflow-x: auto;" tabindex="0" data-language="python"><code><span class="line"><span style="color:#F97583">import</span><span style="color:#E1E4E8"> requests</span></span>
<span class="line"></span>
<span class="line"><span style="color:#E1E4E8">r </span><span style="color:#F97583">=</span><span style="color:#E1E4E8"> requests.get(</span></span>
<span class="line"><span style="color:#9ECBFF">    "https://findlocal.community/api/events"</span><span style="color:#E1E4E8">,</span></span>
<span class="line"><span style="color:#FFAB70">    params</span><span style="color:#F97583">=</span><span style="color:#E1E4E8">{</span><span style="color:#9ECBFF">"city"</span><span style="color:#E1E4E8">: </span><span style="color:#9ECBFF">"denver"</span><span style="color:#E1E4E8">, </span><span style="color:#9ECBFF">"when"</span><span style="color:#E1E4E8">: </span><span style="color:#9ECBFF">"today"</span><span style="color:#E1E4E8">, </span><span style="color:#9ECBFF">"free"</span><span style="color:#E1E4E8">: </span><span style="color:#9ECBFF">"1"</span><span style="color:#E1E4E8">},</span></span>
<span class="line"><span style="color:#FFAB70">    timeout</span><span style="color:#F97583">=</span><span style="color:#79B8FF">15</span><span style="color:#E1E4E8">,</span></span>
<span class="line"><span style="color:#E1E4E8">)</span></span>
<span class="line"><span style="color:#E1E4E8">r.raise_for_status()</span></span>
<span class="line"><span style="color:#E1E4E8">body </span><span style="color:#F97583">=</span><span style="color:#E1E4E8"> r.json()</span></span>
<span class="line"><span style="color:#F97583">for</span><span style="color:#E1E4E8"> e </span><span style="color:#F97583">in</span><span style="color:#E1E4E8"> body[</span><span style="color:#9ECBFF">"data"</span><span style="color:#E1E4E8">]:</span></span>
<span class="line"><span style="color:#79B8FF">    print</span><span style="color:#E1E4E8">(e[</span><span style="color:#9ECBFF">"event_date"</span><span style="color:#E1E4E8">], e[</span><span style="color:#9ECBFF">"start_time"</span><span style="color:#E1E4E8">], e[</span><span style="color:#9ECBFF">"title"</span><span style="color:#E1E4E8">], </span><span style="color:#9ECBFF">"—"</span><span style="color:#E1E4E8">, e[</span><span style="color:#9ECBFF">"venue_name"</span><span style="color:#E1E4E8">])</span></span>
<span class="line"><span style="color:#79B8FF">print</span><span style="color:#E1E4E8">(body[</span><span style="color:#9ECBFF">"meta"</span><span style="color:#E1E4E8">])</span></span></code></pre>
<h3 id="paging-through-everything">Paging through everything</h3>
<pre class="astro-code github-dark" style="background-color:#24292e;color:#e1e4e8; overflow-x: auto;" tabindex="0" data-language="bash"><code><span class="line"><span style="color:#6A737D"># Page size is 100 by default; walk `page` until data comes back empty</span></span>
<span class="line"><span style="color:#B392F0">curl</span><span style="color:#9ECBFF"> 'https://findlocal.community/api/events?city=austin&amp;page=1'</span></span>
<span class="line"><span style="color:#B392F0">curl</span><span style="color:#9ECBFF"> 'https://findlocal.community/api/events?city=austin&amp;page=2'</span></span></code></pre>
<h2 id="caching-freshness-and-fair-use">Caching, freshness, and fair use</h2>
<ul>
<li>Responses are cached at the edge for <strong>5 minutes</strong> and in your browser for <strong>1 minute</strong> (<code>Cache-Control: public, max-age=60, s-maxage=300</code>). Polling faster than that just returns the cached copy.</li>
<li>Listings update as venues are re-scraped, typically <strong>daily</strong>. <code>last_seen_at</code> tells you the last time we saw an event on its source page.</li>
<li>Coverage is 80+ metros across the US and the UK (London). The full list is in <a href="https://findlocal.community/llms.txt">llms.txt</a> and on the <a href="https://findlocal.community/venues">city pages</a>.</li>
<li>Every listing page also advertises its JSON twin with <code>&lt;link rel="alternate" type="application/json"&gt;</code>, so you can discover the API URL for any filtered view from the page itself.</li>
<li>The API needs an API key — send it as <code>Authorization: Bearer &lt;key&gt;</code> (the <code>x-api-key</code> header works too). A missing or invalid key returns <code>401</code>; going over your rate limit or monthly quota returns <code>429</code> with a <code>Retry-After</code> header. There’s a <a href="https://findlocal.community/pricing">free tier plus Indie and Business plans</a>, and one key works for both this API and the MCP server. Please cache on your side, keep request rates reasonable, and link back to the event’s Find Local page or the venue’s own site.</li>
<li>Field names are stable but the API is not formally versioned. New fields may appear; existing ones won’t be renamed without notice on this blog.</li>
</ul>
<h2 id="whats-next">What’s next</h2>
<ul>
<li><a href="https://findlocal.community/blog/findlocal-mcp-server">Connect FindLocal to Claude, Cursor, and other AI assistants (MCP)</a> — the same data as tools an assistant can call.</li>
<li><a href="https://findlocal.community/blog/how-find-local-finds-events">How Find Local finds events the big platforms miss</a> — where the data comes from.</li>
<li><a href="https://findlocal.community/">The FindLocal platform page</a> — the overview for teams building on the data.</li>
</ul>
]]></content:encoded></item>
<item><title>How to Connect FindLocal to Claude, Cursor, and Other AI Assistants (MCP)</title><link>https://findlocal.community/blog/findlocal-mcp-server</link><guid isPermaLink="true">https://findlocal.community/blog/findlocal-mcp-server</guid><pubDate>Fri, 04 Sep 2026 00:00:00 GMT</pubDate><description>Add the FindLocal MCP server to Claude.ai, Claude Code, Cursor, or any MCP client and ask plain-English questions about live local events in 80+ metros across the US and the UK. Setup steps, the API key, and every tool explained.</description><content:encoded><![CDATA[<blockquote>
<p><strong>Reference:</strong> the up-to-date endpoint, parameter and field tables now live at <a href="https://findlocal.community/mcp">/mcp</a>. This post is the walkthrough.</p>
</blockquote>
<blockquote>
<p><strong>Update:</strong> there are no shared demo keys anymore. Authorize with your own API key from <a href="https://findlocal.community/pricing">/pricing</a> — the same key works for the MCP server and the JSON API, and there’s a free tier.</p>
</blockquote>
<p>Find Local runs a remote <a href="https://modelcontextprotocol.io">MCP</a> server. MCP (Model Context Protocol) is the open standard AI assistants use to call outside tools, so once it’s connected you can ask Claude or Cursor things like “what’s free in Brooklyn this weekend?” or “any jazz near Cambridge tonight?” and it will answer from the same curated venue calendars the website uses, with links back to each event.</p>
<p>The server lives at:</p>
<pre class="astro-code github-dark" style="background-color:#24292e;color:#e1e4e8; overflow-x: auto;" tabindex="0" data-language="plaintext"><code><span class="line"><span>https://mcp.findlocal.community/mcp</span></span></code></pre>
<p>It’s read-only, uses the Streamable HTTP transport (an <code>/sse</code> endpoint exists for older clients), and authorizes with OAuth plus a short <strong>account key</strong> step described below. If you’d rather query the data directly from code, see <a href="https://findlocal.community/blog/findlocal-events-api">the Events API guide</a>.</p>
<h2 id="1-add-the-server-to-your-client">1. Add the server to your client</h2>
<h3 id="claudeai-web-and-desktop">Claude.ai (web and desktop)</h3>
<ol>
<li>Open <strong>Settings → Connectors</strong>.</li>
<li>Choose <strong>Add custom connector</strong>.</li>
<li>Paste <code>https://mcp.findlocal.community/mcp</code> and save.</li>
<li>Click <strong>Connect</strong>. A small FindLocal authorization page opens — see the account key step below.</li>
<li>In a new chat, make sure the <strong>FindLocal</strong> connector is toggled on, then ask about events.</li>
</ol>
<h3 id="claude-code-terminal">Claude Code (terminal)</h3>
<pre class="astro-code github-dark" style="background-color:#24292e;color:#e1e4e8; overflow-x: auto;" tabindex="0" data-language="bash"><code><span class="line"><span style="color:#B392F0">claude</span><span style="color:#9ECBFF"> mcp</span><span style="color:#9ECBFF"> add</span><span style="color:#79B8FF"> --transport</span><span style="color:#9ECBFF"> http</span><span style="color:#9ECBFF"> findlocal</span><span style="color:#9ECBFF"> https://mcp.findlocal.community/mcp</span></span></code></pre>
<p>Start a session and the first FindLocal tool call will open the authorization page in your browser.</p>
<h3 id="cursor">Cursor</h3>
<p>Add the server to <code>~/.cursor/mcp.json</code> (or your project’s <code>.cursor/mcp.json</code>) and restart Cursor:</p>
<pre class="astro-code github-dark" style="background-color:#24292e;color:#e1e4e8; overflow-x: auto;" tabindex="0" data-language="json"><code><span class="line"><span style="color:#E1E4E8">{</span></span>
<span class="line"><span style="color:#79B8FF">  "mcpServers"</span><span style="color:#E1E4E8">: {</span></span>
<span class="line"><span style="color:#79B8FF">    "findlocal"</span><span style="color:#E1E4E8">: {</span></span>
<span class="line"><span style="color:#79B8FF">      "url"</span><span style="color:#E1E4E8">: </span><span style="color:#9ECBFF">"https://mcp.findlocal.community/mcp"</span></span>
<span class="line"><span style="color:#E1E4E8">    }</span></span>
<span class="line"><span style="color:#E1E4E8">  }</span></span>
<span class="line"><span style="color:#E1E4E8">}</span></span></code></pre>
<h3 id="any-other-mcp-client">Any other MCP client</h3>
<p>Any client that supports remote servers over Streamable HTTP with OAuth works — point it at the URL above. To poke at the tools without a chat client, use the MCP Inspector:</p>
<pre class="astro-code github-dark" style="background-color:#24292e;color:#e1e4e8; overflow-x: auto;" tabindex="0" data-language="bash"><code><span class="line"><span style="color:#B392F0">npx</span><span style="color:#9ECBFF"> @modelcontextprotocol/inspector</span></span>
<span class="line"><span style="color:#6A737D"># transport: Streamable HTTP, URL: https://mcp.findlocal.community/mcp</span></span></code></pre>
<h2 id="2-authorize-with-your-api-key">2. Authorize with your API key</h2>
<p>When your client connects, FindLocal shows a one-field consent page asking for your <strong>API key</strong>. Usage is metered against your account’s monthly quota so we can keep the service healthy.</p>
<ul>
<li>Get a key at <a href="https://findlocal.community/signup?from=blog">/signup</a>. The <strong>Free</strong> plan needs no card; the <strong>Indie</strong> and <strong>Business</strong> plans add more calls (see <a href="https://findlocal.community/#pricing">pricing</a>), and anything bigger is a conversation. Create the key yourself in the <a href="https://findlocal.community/dashboard/keys">dashboard</a> — it is shown once. The monthly quota belongs to your account, so every key you make draws on the same pool.</li>
<li>The same key works for both the MCP server and the <a href="https://findlocal.community/blog/findlocal-events-api">JSON API</a>.</li>
</ul>
<p>Once authorized you won’t be asked again for that client. You can check where you stand any time by asking the assistant to run <code>get_usage</code>, which reports the account’s calls used and remaining for the current month. When a quota is exhausted, tool calls return a clear “monthly quota reached” message rather than partial data.</p>
<h2 id="3-ask-questions">3. Ask questions</h2>
<p>Some prompts that work well:</p>
<ul>
<li>“What’s happening in Boston tonight that’s free?”</li>
<li>“Find comedy shows in Chicago this weekend under $25.”</li>
<li>“Any talks or film screenings in London this week under £15?”</li>
<li>“When is my favourite band next playing in Chicago?”</li>
<li>“List music venues in Austin’s East Side and what’s coming up at each.”</li>
<li>“Is there anything family-friendly in Denver on Saturday afternoon?”</li>
<li>“What categories of events does FindLocal have in Seattle, and how many of each?”</li>
</ul>
<p>Every event the assistant gets back includes a <code>url</code> to its page on findlocal.community, plus ticket and venue links when the venue publishes them, so you can jump straight from the chat to buying a ticket.</p>
<h2 id="the-tools">The tools</h2>
<p>These are the tools the server exposes. Your assistant picks the right one automatically; the list is here so you know what’s possible and how to phrase requests.</p>
<table>
<thead>
<tr>
<th>Tool</th>
<th>What it does</th>
<th>Inputs</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>search_events</code></td>
<td>The main one. Upcoming events in a city, filtered every way the site can filter. Returns <code>{ city, total_matched, returned, events }</code>.</td>
<td><code>city</code> (required; name or slug), <code>region</code>, <code>when</code> (<code>anytime</code>, <code>today</code>, <code>tomorrow</code>, <code>weekend</code>, <code>this_weekend</code>, <code>week</code>), <code>date_from</code> / <code>date_to</code> (<code>YYYY-MM-DD</code>), <code>category</code> (a slug or a genre word like <code>jazz</code>), <code>free_only</code>, <code>price_max</code> (city’s local currency), <code>time_of_day</code> (<code>morning</code>, <code>afternoon</code>, <code>evening</code>), <code>query</code> (free text over titles, venues and performers), <code>performer</code> (performer/author names only), <code>authors_only</code>, <code>series_id</code> (every date of one series), <code>sort</code> (<code>date</code> or <code>featured</code>), <code>limit</code> (1–200, default 50)</td>
</tr>
<tr>
<td><code>get_event</code></td>
<td>Full detail for one event, including its description. Past and delisted events still come back, flagged <code>expired</code> / <code>delisted</code>; a cross-venue duplicate also carries <code>duplicate_of</code>, the id of the event we kept.</td>
<td><code>id</code></td>
</tr>
<tr>
<td><code>list_venues</code></td>
<td>Active venues in a city or region with address, coordinates, type, size / capacity, and upcoming counts.</td>
<td><code>city</code> (required), <code>region</code>, <code>limit</code> (≤500)</td>
</tr>
<tr>
<td><code>get_venue</code></td>
<td>One venue by id, or a fuzzy name search returning up to 5 matches.</td>
<td><code>id</code>, or <code>name</code> (+ optional <code>city</code>)</td>
</tr>
<tr>
<td><code>list_categories</code></td>
<td>The category slugs <code>search_events</code> accepts, with the number of upcoming events in each for a city.</td>
<td><code>city</code> (required)</td>
</tr>
<tr>
<td><code>get_events_at_venue</code></td>
<td>Upcoming events at one venue.</td>
<td><code>venue_id</code>, <code>limit</code> (≤100, default 20)</td>
</tr>
<tr>
<td><code>get_usage</code></td>
<td>Your plan and the account’s calls used and remaining this month. Free.</td>
<td>none</td>
</tr>
<tr>
<td><code>get_api_docs</code></td>
<td>The REST API reference by topic, for when you’re building an integration. Free.</td>
<td><code>topic</code></td>
</tr>
<tr>
<td><code>get_setup_guide</code></td>
<td>A ready-to-run snippet (curl, JavaScript, Python, Claude Code, Cursor, Claude Desktop, or the Free-plan attribution link). Free.</td>
<td><code>target</code></td>
</tr>
</tbody>
</table>
<p>Categories are <code>music</code>, <code>comedy</code>, <code>theater</code>, <code>dance</code>, <code>art</code>, <code>food_drink</code>, <code>family</code>, <code>market</code>, <code>workshop</code>, <code>fitness</code>, <code>nightlife</code>, <code>community</code>, <code>festival</code>, <code>parks</code>, <code>literary</code>, <code>film</code>, and <code>talks</code>. Cities can be given by name (“New York”) or slug (“new-york”); the full list of metros (US and UK) is in <a href="https://findlocal.community/llms.txt">llms.txt</a>.</p>
<p>An event in a tool result looks like:</p>
<pre class="astro-code github-dark" style="background-color:#24292e;color:#e1e4e8; overflow-x: auto;" tabindex="0" data-language="json"><code><span class="line"><span style="color:#E1E4E8">{</span></span>
<span class="line"><span style="color:#79B8FF">  "id"</span><span style="color:#E1E4E8">: </span><span style="color:#9ECBFF">"8f9b9068-4e11-466b-a1cc-d36230d28fdd"</span><span style="color:#E1E4E8">,</span></span>
<span class="line"><span style="color:#79B8FF">  "title"</span><span style="color:#E1E4E8">: </span><span style="color:#9ECBFF">"Hooley Hour"</span><span style="color:#E1E4E8">,</span></span>
<span class="line"><span style="color:#79B8FF">  "date"</span><span style="color:#E1E4E8">: </span><span style="color:#9ECBFF">"2026-09-04"</span><span style="color:#E1E4E8">,</span></span>
<span class="line"><span style="color:#79B8FF">  "start_time"</span><span style="color:#E1E4E8">: </span><span style="color:#9ECBFF">"17:00:00"</span><span style="color:#E1E4E8">,</span></span>
<span class="line"><span style="color:#79B8FF">  "city"</span><span style="color:#E1E4E8">: </span><span style="color:#9ECBFF">"Boston"</span><span style="color:#E1E4E8">,</span></span>
<span class="line"><span style="color:#79B8FF">  "region"</span><span style="color:#E1E4E8">: </span><span style="color:#9ECBFF">"Cambridge"</span><span style="color:#E1E4E8">,</span></span>
<span class="line"><span style="color:#79B8FF">  "venue"</span><span style="color:#E1E4E8">: { </span><span style="color:#79B8FF">"id"</span><span style="color:#E1E4E8">: </span><span style="color:#9ECBFF">"b7716a13-…"</span><span style="color:#E1E4E8">, </span><span style="color:#79B8FF">"name"</span><span style="color:#E1E4E8">: </span><span style="color:#9ECBFF">"The Lilypad"</span><span style="color:#E1E4E8">, </span><span style="color:#79B8FF">"address"</span><span style="color:#E1E4E8">: </span><span style="color:#9ECBFF">"1353 Cambridge St, Cambridge, MA 02139"</span><span style="color:#E1E4E8"> },</span></span>
<span class="line"><span style="color:#79B8FF">  "category"</span><span style="color:#E1E4E8">: </span><span style="color:#9ECBFF">"music"</span><span style="color:#E1E4E8">,</span></span>
<span class="line"><span style="color:#79B8FF">  "category_tags"</span><span style="color:#E1E4E8">: [</span><span style="color:#9ECBFF">"Theater"</span><span style="color:#E1E4E8">, </span><span style="color:#9ECBFF">"Music"</span><span style="color:#E1E4E8">],</span></span>
<span class="line"><span style="color:#79B8FF">  "performers"</span><span style="color:#E1E4E8">: [{ </span><span style="color:#79B8FF">"name"</span><span style="color:#E1E4E8">: </span><span style="color:#9ECBFF">"The Hooley Band"</span><span style="color:#E1E4E8">, </span><span style="color:#79B8FF">"role"</span><span style="color:#E1E4E8">: </span><span style="color:#9ECBFF">"headliner"</span><span style="color:#E1E4E8"> }],</span></span>
<span class="line"><span style="color:#79B8FF">  "price_label"</span><span style="color:#E1E4E8">: </span><span style="color:#9ECBFF">"Free"</span><span style="color:#E1E4E8">,</span></span>
<span class="line"><span style="color:#79B8FF">  "price_usd"</span><span style="color:#E1E4E8">: </span><span style="color:#79B8FF">0</span><span style="color:#E1E4E8">,</span></span>
<span class="line"><span style="color:#79B8FF">  "price_amount"</span><span style="color:#E1E4E8">: </span><span style="color:#79B8FF">0</span><span style="color:#E1E4E8">,</span></span>
<span class="line"><span style="color:#79B8FF">  "currency"</span><span style="color:#E1E4E8">: </span><span style="color:#9ECBFF">"USD"</span><span style="color:#E1E4E8">,</span></span>
<span class="line"><span style="color:#79B8FF">  "is_free"</span><span style="color:#E1E4E8">: </span><span style="color:#79B8FF">true</span><span style="color:#E1E4E8">,</span></span>
<span class="line"><span style="color:#79B8FF">  "recurring"</span><span style="color:#E1E4E8">: </span><span style="color:#79B8FF">true</span><span style="color:#E1E4E8">,</span></span>
<span class="line"><span style="color:#79B8FF">  "upcoming_dates_in_series"</span><span style="color:#E1E4E8">: </span><span style="color:#79B8FF">4</span><span style="color:#E1E4E8">,</span></span>
<span class="line"><span style="color:#79B8FF">  "series_id"</span><span style="color:#E1E4E8">: </span><span style="color:#9ECBFF">"s_3f0c9a1d2b7e4c55"</span><span style="color:#E1E4E8">,</span></span>
<span class="line"><span style="color:#79B8FF">  "details_url"</span><span style="color:#E1E4E8">: </span><span style="color:#9ECBFF">"https://www.lilypadinman.com/home/2026/hooley-hour-bs5y2-pl4db9"</span><span style="color:#E1E4E8">,</span></span>
<span class="line"><span style="color:#79B8FF">  "image"</span><span style="color:#E1E4E8">: </span><span style="color:#9ECBFF">"https://images.squarespace-cdn.com/…/1000016764.jpg"</span><span style="color:#E1E4E8">,</span></span>
<span class="line"><span style="color:#79B8FF">  "website"</span><span style="color:#E1E4E8">: </span><span style="color:#9ECBFF">"https://www.lilypadinman.com/"</span><span style="color:#E1E4E8">,</span></span>
<span class="line"><span style="color:#79B8FF">  "url"</span><span style="color:#E1E4E8">: </span><span style="color:#9ECBFF">"https://findlocal.community/event/8f9b9068-4e11-466b-a1cc-d36230d28fdd"</span><span style="color:#E1E4E8">,</span></span>
<span class="line"><span style="color:#79B8FF">  "source"</span><span style="color:#E1E4E8">: </span><span style="color:#9ECBFF">"scraper_local"</span></span>
<span class="line"><span style="color:#E1E4E8">}</span></span></code></pre>
<p>Fields that are empty for an event are simply omitted. <code>date</code> is the venue’s local calendar day; <code>price_label</code> is the venue’s own wording and <code>price_amount</code> our parsed number in the metro’s <code>currency</code> (GBP for London; <code>price_usd</code> repeats it for US metros only); <code>is_free</code> is set when we can tell either way. A multi-day run stored as one event (an exhibition or festival) has <code>end_date</code>, its last day; <code>organizer</code> names who puts the event on when that isn’t the venue; <code>series_id</code> is shared by every date of one series and can be passed back to <code>search_events</code>.</p>
<h2 id="good-to-know">Good to know</h2>
<ul>
<li><strong>Freshness.</strong> Venue calendars are re-scraped regularly, typically daily, so results reflect what venues currently list. The <code>when</code> buckets are resolved in each city’s time zone.</li>
<li><strong>Coverage.</strong> 80+ metros across the US and the UK (London), over 10,000 venues, with an emphasis on the small and mid-size venues that never make it onto ticketing aggregators. A missing venue is a gap in our crawl, not a sign the event doesn’t exist — tell us at <a href="mailto:elliot@findlocal.community">elliot@findlocal.community</a>.</li>
<li><strong>Privacy.</strong> The server only ever reads event and venue data. It stores the API key you authorize with and a per-month call counter, nothing about your conversations.</li>
<li><strong>Rate limits.</strong> Quotas are monthly per account, shared by all of its keys. When you hit your monthly quota, tool calls return a clear “monthly quota reached” message rather than partial data; upgrade from your <a href="https://findlocal.community/dashboard/billing">dashboard</a>.</li>
</ul>
<h2 id="whats-next">What’s next</h2>
<ul>
<li><a href="https://findlocal.community/blog/findlocal-events-api">How to use the FindLocal Events API</a> — the same data as plain JSON.</li>
<li><a href="https://findlocal.community/blog/how-find-local-finds-events">How Find Local finds events the big platforms miss</a> — where the data comes from.</li>
<li><a href="https://findlocal.community/">The FindLocal platform page</a> — the overview for teams building on the data.</li>
</ul>
]]></content:encoded></item>
<item><title>How Find Local Finds Events the Big Platforms Miss</title><link>https://findlocal.community/blog/how-find-local-finds-events</link><guid isPermaLink="true">https://findlocal.community/blog/how-find-local-finds-events</guid><pubDate>Sat, 29 Aug 2026 00:00:00 GMT</pubDate><description>Find Local pulls events straight from local venue calendars — not ticketing aggregators — so small shows and community events actually show up.</description><content:encoded><![CDATA[<p>If you’ve ever searched “things to do tonight” and gotten the same arena tour and stadium show on every site, you’ve seen the gap Find Local was built for. Most event platforms list what ticketing companies sell. But the majority of what actually happens in a city — the jazz trio at a neighborhood bar, the Tuesday open mic, the drag brunch, the community theater run — never touches a big ticketing pipeline.</p>
<h2 id="straight-from-the-source">Straight from the source</h2>
<p>Find Local works differently: we go to the venues themselves. Our pipeline reads the calendars of thousands of local venues — music halls, comedy clubs, theaters, bars, community spaces — across dozens of US cities (and now London), and turns them into one structured, searchable feed that updates daily.</p>
<p>That means the listings include the shows that only ever existed as a line on a venue’s own website. No account required, no markup, no “fees revealed at checkout” — tickets link straight to the venue or its own ticketing page.</p>
<h2 id="browse-it-your-way">Browse it your way</h2>
<ul>
<li><strong><a href="https://findlocal.community/">The event feed</a></strong> shows everything upcoming in your city, filterable by date, category, price, and time of day.</li>
<li><strong>The map view</strong> puts every venue with upcoming events on a map, so you can see what’s walkable tonight.</li>
<li><strong><a href="https://findlocal.community/venues">Venue pages</a></strong> collect each spot’s upcoming calendar in one place.</li>
<li><strong>City pages</strong> like <a href="https://findlocal.community/city/boston">Boston</a>, <a href="https://findlocal.community/city/new-york">New York</a>, and <a href="https://findlocal.community/city/chicago">Chicago</a> give you a quick date-grouped rundown of what’s coming up.</li>
</ul>
<h2 id="for-builders">For builders</h2>
<p>The same structured event data behind the site is available to developers through the <a href="https://findlocal.community/">FindLocal platform</a>: a free <a href="https://findlocal.community/blog/findlocal-events-api">JSON API</a> and an <a href="https://findlocal.community/blog/findlocal-mcp-server">MCP server</a> you can plug into Claude, Cursor, and other AI assistants.</p>
<p>Find Local is free to use — pick your city and see what’s on tonight at <a href="https://findlocal.community/">findlocal.community</a>.</p>
]]></content:encoded></item>
<item><title>How to Find Things to Do This Weekend (Without Doomscrolling Three Apps)</title><link>https://findlocal.community/blog/how-to-find-things-to-do-this-weekend</link><guid isPermaLink="true">https://findlocal.community/blog/how-to-find-things-to-do-this-weekend</guid><pubDate>Sat, 29 Aug 2026 00:00:00 GMT</pubDate><description>A practical system for going out more — why event discovery feels broken, and how to fix your own weekend in about five minutes.</description><content:encoded><![CDATA[<p>It’s Thursday. You want plans for Saturday. So you do the ritual: open Instagram and scroll past ads, check a ticketing app that only knows about arenas, google “things to do this weekend” and land on a listicle written eight months ago. Forty minutes later you have one screenshot and no plans.</p>
<p>The problem isn’t that nothing is happening. In any decent-sized city, <em>hundreds</em> of things are happening this weekend. The problem is where that information lives: scattered across individual venue websites, bar chalkboards, and email newsletters — places search engines and big platforms barely reach.</p>
<p>Here’s a system that actually works.</p>
<h2 id="1-start-with-a-time-not-an-activity">1. Start with a time, not an activity</h2>
<p>“Something Saturday night” is a better search than “jazz.” Availability first, genre second — the best nights out are usually the thing you didn’t know to search for. Scan everything on in your city for the window you’re free, <em>then</em> narrow.</p>
<p>On <a href="https://findlocal.community/">Find Local</a>, that’s the This Weekend filter plus the evening time-of-day filter — one tap each.</p>
<h2 id="2-think-in-venues-not-events">2. Think in venues, not events</h2>
<p>Events are one-offs; venues are repeat characters. If you liked one show at a room, that venue’s calendar is the highest-signal list of future plans you’ll ever get. Keep three or four home venues and check what they have coming up — every <a href="https://findlocal.community/venues">venue page</a> on Find Local lists its upcoming calendar in one place.</p>
<h2 id="3-use-the-map-when-youre-already-out">3. Use the map when you’re already out</h2>
<p>Half of going out is logistics. If you’re meeting a friend in one neighborhood at 7, the question isn’t “what’s good tonight” — it’s “what’s good <em>within ten minutes of here</em> at 9.” A <a href="https://findlocal.community/map">map view</a> of tonight’s events answers that in a glance.</p>
<h2 id="4-let-the-small-stuff-win-sometimes">4. Let the small stuff win sometimes</h2>
<p>Big shows are easy to find precisely because someone paid to put them in front of you. The Tuesday-night residency, the brewery trivia, the black-box play — the stuff with no ad budget — is where cities actually live. That’s most of what we index, because we pull from <a href="https://findlocal.community/blog/how-find-local-finds-events/">venue calendars directly</a>, not from ticketing feeds.</p>
<h2 id="the-five-minute-version">The five-minute version</h2>
<ol>
<li>Open <a href="https://findlocal.community/city/boston">your city’s feed</a> (we cover 80+ metros across the US and the UK — <a href="https://findlocal.community/city/boston">Boston</a>, <a href="https://findlocal.community/city/new-york">New York</a>, <a href="https://findlocal.community/city/chicago">Chicago</a>, <a href="https://findlocal.community/city/los-angeles">LA</a>, and more).</li>
<li>Filter to the weekend, evening, and — if money’s tight — free events.</li>
<li>Save two or three candidates. Having a backup kills the “eh, never mind” instinct.</li>
<li>Go. The venue would love to see you.</li>
</ol>
<p>No account, no spam, no fees — just what’s on. <a href="https://findlocal.community/">Find your city →</a></p>
]]></content:encoded></item>
<item><title>Live Music in Boston — 10 Venues Locals Actually Go To</title><link>https://findlocal.community/blog/live-music-boston-venue-guide</link><guid isPermaLink="true">https://findlocal.community/blog/live-music-boston-venue-guide</guid><pubDate>Sat, 29 Aug 2026 00:00:00 GMT</pubDate><description>From folk rooms in Harvard Square to rock clubs on Comm Ave, a guide to the Boston-area venues with something on nearly every night.</description><content:encoded><![CDATA[<p>Boston punches way above its weight for live music — but most of it never shows up on the big ticketing apps. The best nights out here happen in rooms that book their own calendars: folk clubs, jazz bars, black-box stages, breweries with a PA. Here’s where to look, with links to each venue’s live calendar on Find Local.</p>
<h2 id="the-rock-clubs">The rock clubs</h2>
<p><strong><a href="https://findlocal.community/venue/f1de7878-2b80-4cf4-9247-c49e2b2e3afd">Paradise Rock Club</a></strong> — The Comm Ave institution near BU, and still one of the best rooms in the city to catch a touring act right before they get too big for it.</p>
<p><strong><a href="https://findlocal.community/venue/e0cb6e24-2fed-4e07-9b2b-f0034689a054">The Sinclair</a></strong> — Harvard Square’s mid-size stage, a restaurant-and-venue combo with one of the busiest calendars in Cambridge.</p>
<p><strong><a href="https://findlocal.community/venue/75680724-5ed4-4967-bf54-76530710ddf7">Roadrunner</a></strong> — Brighton’s newer big room, built for the acts that outgrew the clubs.</p>
<p><strong><a href="https://findlocal.community/venue/25cb224c-7068-4d84-b288-c96e45d35507">House of Blues</a></strong> — The Lansdowne Street standby across from Fenway, mixing national tours with theme nights.</p>
<h2 id="folk-and-jazz-rooms">Folk and jazz rooms</h2>
<p><strong><a href="https://findlocal.community/venue/3d4b1bd1-7ed9-4fcb-b16c-250d9dece36e">Club Passim</a></strong> — The legendary Harvard Square folk club (Joan Baez and Bob Dylan played the room it grew out of). Intimate doesn’t begin to cover it.</p>
<p><strong><a href="https://findlocal.community/venue/e1423c55-ad66-4016-ab15-e791ba9c12bc">Regattabar</a></strong> — Cambridge’s renowned jazz club, back with a steady calendar of live performances.</p>
<p><strong><a href="https://findlocal.community/venue/b7716a13-e708-4573-8445-ea786a47233e">The Lilypad</a></strong> — An Inman Square art-space-turned-stage where jazz, experimental, and songwriter nights share the week.</p>
<p><strong><a href="https://findlocal.community/venue/464f124c-5517-47ce-a97e-86fbee76ad04">Lizard Lounge</a></strong> — A cozy basement room under Cambridge Common known for up-close sets and long-running residencies.</p>
<h2 id="dinner-and-a-show-and-a-pint">Dinner-and-a-show (and a pint)</h2>
<p><strong><a href="https://findlocal.community/venue/c1306e27-2e7d-48e0-a920-146eb673dcc1">City Winery</a></strong> — A working winery, restaurant, and concert hall in one, with the busiest music calendar in the city — often multiple shows a night across its stages.</p>
<p><strong><a href="https://findlocal.community/venue/e37161c9-1aa9-4f48-857b-ca666d15cccf">Somerville Theatre</a></strong> — The historic Davis Square movie palace that moonlights as one of the area’s best-sounding live rooms.</p>
<h2 id="the-trick-to-actually-catching-these-shows">The trick to actually catching these shows</h2>
<p>Most of these venues publish their calendars on their own sites, which means the shows rarely surface when you search “live music Boston tonight.” That’s the gap <a href="https://findlocal.community/">Find Local</a> exists to close: we read the venues’ own calendars daily and put everything — headline tours and Tuesday-night residencies alike — in <a href="https://findlocal.community/city/boston">one feed for Boston</a> you can filter by date, price, and time of day.</p>
<p>Browse <a href="https://findlocal.community/venues">all Boston-area venues</a> or jump straight to <a href="https://findlocal.community/city/boston">what’s on in Boston this week</a>.</p>
]]></content:encoded></item>
<item><title>Where to Find Stand-Up in New York (Beyond the Two Clubs You Already Know)</title><link>https://findlocal.community/blog/nyc-stand-up-comedy-clubs</link><guid isPermaLink="true">https://findlocal.community/blog/nyc-stand-up-comedy-clubs</guid><pubDate>Sat, 29 Aug 2026 00:00:00 GMT</pubDate><description>NYC has stand-up every single night — in dedicated clubs, back rooms, and a Bushwick rooftop. A guide to the rooms with shows on all week.</description><content:encoded><![CDATA[<p>Ask an out-of-towner where to see comedy in New York and you’ll hear the same two famous names. But the real engine of NYC stand-up is the dozens of rooms running shows every night of the week — clubs where tonight’s lineup might include a Netflix name dropping in to work out new material next to the best unknowns in the city.</p>
<p>Here are rooms with packed calendars you can browse right now:</p>
<h2 id="dedicated-comedy-clubs">Dedicated comedy clubs</h2>
<p><strong><a href="https://findlocal.community/venue/9931859d-5b76-4881-97db-5c5cd976cb02">New York Comedy Club — East Village</a></strong> — One of the city’s premier stand-up rooms, with multiple shows nightly featuring comics you’ll recognize and ones you’re about to.</p>
<p><strong><a href="https://findlocal.community/venue/0acbe956-ca20-45fc-b504-5b2cfcf92041">Broadway Comedy Club</a></strong> — A Midtown staple showcasing a rotating mix of established and emerging comedians, with several showtimes a night.</p>
<p><strong><a href="https://findlocal.community/venue/a89c1ea7-fce0-474e-bfb5-0b6048f5dd37">Greenwich Village Comedy Club</a></strong> — An intimate Village basement in the neighborhood that basically invented the form’s New York era.</p>
<p><strong><a href="https://findlocal.community/venue/1c60d37c-a5d9-4118-a1a6-164e4b0ef456">The Grisly Pear — Midtown</a></strong> — A bar-plus-showroom with one of the busiest comedy calendars in Manhattan, heavy on affordable shows.</p>
<h2 id="the-indie-side">The indie side</h2>
<p><strong><a href="https://findlocal.community/venue/beebb3fd-4a87-47b3-91d8-0d9d081b33ad">The Tiny Cupboard</a></strong> — Brooklyn’s hidden gem: an intimate Bushwick venue (yes, really, in an apartment building — with a rooftop) that’s become one of the most beloved independent comedy spots in the city.</p>
<p>And that’s just the dedicated rooms. All over Brooklyn and Manhattan, bars like <strong><a href="https://findlocal.community/venue/b06c778e-f997-42a5-95da-15f5347c8e1e">Freddy’s</a></strong> and <strong><a href="https://findlocal.community/venue/94297e14-e36c-483e-8f35-4df00c12ba2b">Pine Box Rock Shop</a></strong> run weekly comedy nights and open mics between their music bookings — the kind of shows that only ever exist as a line on the venue’s own calendar.</p>
<h2 id="how-to-actually-pick-a-show">How to actually pick a show</h2>
<p>Comedy in New York is a nightly commodity — the hard part isn’t finding <em>a</em> show, it’s finding tonight’s show at the right time, near you, at the right price. <a href="https://findlocal.community/city/new-york">Find Local’s New York feed</a> pulls every listing straight from the venues’ own calendars daily. Filter <a href="https://findlocal.community/">the feed</a> to comedy, pick your night, and go — most of these rooms have something on within the next 48 hours.</p>
<p>See <a href="https://findlocal.community/city/new-york">everything happening in New York this week →</a></p>
]]></content:encoded></item>
</channel>
</rss>