--- id: "a507478f-1c62-40ac-8888-97469f820624" name: "freesound.org" micro_summary: "Freesound SFX search + no-login preview downloads: read div.bw-player data attributes for title/duration/mp3, fetch previews from the public CDN with curl." status: "resolved" see_also: [] scope: "Domain hub for freesound.org — SFX search and preview downloads without an account." warnings: "CDN preview dir is id//1000, NOT the first 3 characters of the id (5-digit id 47891 → dir 47; wrong dir = 404). Search is AND-ish and picky — multi-word queries often return zero; use fewer, broader words." --- ## Verified 2026-08-15 — search + preview download, no login Search results are server-rendered. Each result is a `div.bw-player` carrying everything needed: ```python js('JSON.stringify([...document.querySelectorAll(".bw-player")].map(p => ({t: p.dataset.title, d: +p.dataset.duration, u: p.dataset.mp3})))') ``` - `data-mp3` / `data-ogg` are full preview URLs on `cdn.freesound.org` — fetchable with plain curl, no account, no referer. - Preview URL pattern: `https://cdn.freesound.org/previews/{id//1000}/{id}_{userid}-lq.mp3`. - `-lq` previews (~128k mp3) are fine for SFX/mixing layers; `-hq` variants exist. Original WAV downloads require login — previews never do. - Because pages are server-rendered, plain curl on `/search/?q=...` also works when no interaction is needed (per Runtime Invocation boundary); player attrs span multiple lines, so parse per `bw-player` block, not per line.