Discover Curated Restaurant Collections on Paladar Social
Purpose
Paladar Social (paladarsocial.com) is a curated restaurant/bar/café discovery and reservation app (Spanish-first, Argentina-focused). This skill retrieves the platform's catalog of curated collections — the "curated locations around the world" that group recommended venues by theme (quick bites, wine bars, grills, cafés, etc.). It is read-only. The only data reachable without a user account is the public collections catalog via GET /api/collections; deeper discovery (the venues inside a collection), venue detail pages, and the reservation flow are all gated behind Google OAuth and are not reachable unauthenticated. Use this skill to enumerate and describe the curated collections; do not expect it to browse individual restaurants or place a reservation without credentials.
When to Use
- You want the list of Paladar Social's curated restaurant/bar/café collections (id, name, bilingual name/description, and the recommender who curated it).
- You want to answer "what themed collections / curated lists does Paladar offer?" or map a collection name to its stable UUID.
- You are building a downstream flow that first needs a collection
id(the id every authenticated feed/venue call keys off). - Do not use this skill to fetch the restaurants inside a collection, open a venue page, check reservation availability, or book a table — those require an authenticated Google session (see Gotchas).
Workflow
The recommended method is a single unauthenticated HTTP GET — no browser, no session, no stealth needed. Scripted browsing is strictly worse here because every human-facing route redirects unauthenticated visitors to the landing page; the app is a client-rendered Next.js SPA with no server-rendered content to scrape.
Recommended: public JSON API (no auth)
GET https://paladarsocial.com/api/collections- No headers, cookies, or auth required. Returns HTTP 200 with
Content-Type: application/json. - Response shape:
{ "collections": [ { id, name, name_en, description, description_en, recommender_handle, recommender_icon_url }, ... ] }. - At time of authoring this returned 33 collections. The count is not paginated — the full catalog comes back in one response.
- No headers, cookies, or auth required. Returns HTTP 200 with
- Parse the
collectionsarray. Each object'sidis a stable UUID (e.g.ad3e673c-a5d8-43c3-a6d8-c7de22f994d4= "Al Paso" / "Quick Bites"). name/descriptionare the Spanish (default) strings;name_en/description_enare the English equivalents.recommender_handle(e.g.@paladarsocial) andrecommender_icon_urlidentify who curated the collection.- Emit the collections (or a filtered subset) as JSON — see Expected Output.
CLI example (any HTTP client works; residential proxies are not required):
browse cloud fetch "https://paladarsocial.com/api/collections"
# or: curl -s https://paladarsocial.com/api/collections
Browser fallback (only if the JSON endpoint changes shape)
A browser adds nothing for the public catalog, but if you must verify visually:
browse open https://paladarsocial.com/api/collections --remote— Chromium renders the raw JSON.browse get text body— extract the JSON text and parse it. A bare (no--verified, no--proxies) remote session is sufficient; the domain showed no anti-bot defenses across testing.
What you CANNOT do without a Google login
Discovering the venues inside a collection, opening a restaurant/bar/café detail page, and reserving a table all require an authenticated Google OAuth session. There is no email/password, no guest mode, no anonymous browsing, and no public per-collection or per-venue endpoint. If you have a valid Google-authenticated browser profile, the venue feed is served from GET /api/feed (accepts a collection filter) and returns 401 otherwise — but automating Google's OAuth consent screen is out of scope and is blocked by Google's own bot detection. Stop at the collection catalog unless real credentials are supplied.
Site-Specific Gotchas
- Everything is behind Google OAuth.
/authoffers exactly one button: "Continuar con Google". No email/password, no magic link, no guest mode. Confirmed across two independent explorations. - All human-facing routes 307-redirect to
/when unauthenticated. Verified for/explore,/discover,/restaurants,/venues,/venue,/search,/feed,/home,/collections,/map,/cities,/es,/en,/app,/dashboard, and more. Do not waste turns probing page routes for a public discovery UI — there isn't one. /api/collectionsis the one and only public data endpoint. It returns 200 JSON with no auth. This is the honest fast path.- Auth-gated API endpoints return
401 {"error":"Unauthorized"}(JSON), not a redirect. Confirmed forGET /api/feed,GET /api/feed?collection=<id>, andGET /api/me. So the venue-feed-per-collection endpoint exists but is locked. - Non-existent API routes return a
404HTML page (the Next.js not-found page), not JSON. Useful signal: a JSON 401 means "real endpoint, needs auth"; an HTML 404 means "no such endpoint". Confirmed HTML-404 for/api/restaurants,/api/restaurants/search,/api/venues,/api/reservations,/api/bookings,/api/user,/api/profile,/api/lists,/api/reviews,/api/collections/<id>,/api/collections/<id>/restaurants. - Bilingual fields. Content is Spanish-first (
lang="es", Argentine voice — "Descubrí", "Guardá"). Every collection carriesname/name_enanddescription/description_en; pick the pair matching your locale. Some collection names have no distinct English translation (thename_enmay restate the Spanish). - No
robots.txtorsitemap.xml— both 307-redirect to/. There is no crawlable surface. - Other
/api/*strings in the JS bundles are PostHog analytics (/api/broadcast,/api/surveys/,/api/web_experiments/,/api/early_access_features/,/api/js), not app data endpoints. Ignore them. - No anti-bot. The site is a Vercel-hosted Next.js app;
/api/collectionsreturns 200 with or without residential proxies.--verified/--proxiesare unnecessary. The wall here is authentication, not bot protection. - The
idUUIDs are stable and are the keys the authenticated feed uses (/api/feed?collection=<id>). Capture them if a downstream authenticated step will consume them.
Expected Output
Successful catalog retrieval (recommended path):
{
"success": true,
"source": "GET https://paladarsocial.com/api/collections",
"auth_required": false,
"collections_count": 33,
"collections": [
{
"id": "ad3e673c-a5d8-43c3-a6d8-c7de22f994d4",
"name": "Al Paso",
"name_en": "Quick Bites",
"description": "Lugares para comer rápido y sin vueltas.",
"description_en": "Authentic flavors on the go",
"recommender_handle": "@paladarsocial",
"recommender_icon_url": "https://pbs.twimg.com/profile_images/1972780099775647744/_ckn96z5_400x400.jpg"
},
{
"id": "05c23923-a6a1-4cb7-84d9-6c19bba1e257",
"name": "Parrillas, fuegos y fierros",
"name_en": "Grills, Fire and Iron",
"description": "...",
"description_en": "...",
"recommender_handle": "@paladarsocial",
"recommender_icon_url": "https://..."
}
]
}
Attempt to go deeper (discover venues / reserve) without credentials — expected terminal state:
{
"success": false,
"stage": "discover_venues_or_reserve",
"auth_required": true,
"auth_method": "Google OAuth only",
"discovery_reachable_unauthenticated": false,
"reservation_reachable_unauthenticated": false,
"error_reasoning": "All human-facing routes redirect to / when unauthenticated; /api/feed (and /api/feed?collection=<id>) returns 401 Unauthorized. The only public data is GET /api/collections. Reserving a table requires a Google-authenticated session, which is not automatable without credentials."
}