{"id":"781eb3d5-4136-4eab-82dd-88d040f5f5c7","entityType":"agent","slug":"clawhub-crawlora-org-resale-secondhand-research","name":"resale-secondhand-research","canonicalUrl":"https://www.xpersona.co/agent/clawhub-crawlora-org-resale-secondhand-research","canonicalPath":"/agent/clawhub-crawlora-org-resale-secondhand-research","generatedAt":"2026-10-11T15:15:30.028Z","source":"CLAWHUB","claimStatus":"UNCLAIMED","verificationTier":"NONE","summary":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"medium","updatedAt":"2026-10-11T11:57:28.160Z","emptyReason":null},"description":"Researches secondhand, resale, and handmade marketplaces via the Crawlora API — Poshmark, Etsy, Vinted, StockX, Mercari, Depop, Whatnot, GOAT, and Leboncoin — returning clean JSON. Use when the user wants to find or compare listings, check a seller/shop, look up sneaker/streetwear resale prices, or research handmade/vintage goods.","descriptionLabel":"Source description","evidenceSummary":"Capability contract not published. No trust telemetry is available yet. 1.1K downloads reported by the source. Last updated 10/11/2026.","installCommand":"clawhub skill install s17d53nb8nd03gyyfdy32rgde58e574f:resale-secondhand-research","sourceUrl":"https://clawhub.ai/crawlora-org/resale-secondhand-research","homepage":"https://clawhub.ai/crawlora-org/skills/resale-secondhand-research","primaryLinks":[{"label":"View on ClawHub","url":"https://clawhub.ai/crawlora-org/resale-secondhand-research","kind":"source"},{"label":"Homepage","url":"https://clawhub.ai/crawlora-org/skills/resale-secondhand-research","kind":"homepage"}],"safetyScore":84,"overallRank":62,"popularityScore":61,"trustScore":null,"claimedByName":null,"isOwner":false,"seoDescription":"resale-secondhand-research technical dossier on Xpersona with agent coverage, OPENCLEW support, and live trust metadata."},"coverage":{"evidence":{"source":"public-profile","verified":false,"confidence":"medium","updatedAt":"2026-10-11T11:57:28.160Z","emptyReason":null},"protocols":[{"protocol":"OPENCLEW","label":"OpenClaw","status":"self-declared","notes":"Declared in the public agent profile."}],"capabilities":[],"verifiedCount":0,"selfDeclaredCount":1,"capabilityMatrix":{"rows":[{"key":"OPENCLEW","type":"protocol","support":"unknown","confidenceSource":"profile","notes":"Listed on profile"}],"flattenedTokens":"protocol:OPENCLEW|unknown|profile"}},"adoption":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"medium","updatedAt":"2026-10-11T11:57:28.160Z","emptyReason":null},"stars":null,"forks":null,"downloads":1070,"packageName":null,"latestVersion":"1.0.19","tractionLabel":"1.1K downloads"},"release":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"medium","updatedAt":"2026-10-11T11:57:28.146Z","emptyReason":null},"lastUpdatedAt":"2026-10-11T11:57:28.160Z","lastCrawledAt":"2026-10-11T11:57:28.146Z","lastIndexedAt":null,"nextCrawlAt":"2026-10-12T11:57:28.146Z","lastVerifiedAt":null,"highlights":[{"version":"1.0.19","createdAt":"2026-09-29T02:23:16.479Z","changelog":"Sync skill instructions, references, and helper from GitHub 4157a1bf7e8583ee9e9d7a264c65c00aee1a1783","fileCount":5,"zipByteSize":14963},{"version":"1.0.18","createdAt":"2026-09-17T10:20:22.474Z","changelog":"Security hardening: generated helpers now enforce exact routes, methods, and credential-safe curl behavior.","fileCount":5,"zipByteSize":15015},{"version":"1.0.17","createdAt":"2026-09-14T03:39:15.270Z","changelog":"Declare GOAT and Leboncoin in the skill scope to match the documented endpoint catalog","fileCount":5,"zipByteSize":15583},{"version":"1.0.16","createdAt":"2026-09-14T02:04:39.261Z","changelog":"Sync skill instructions, references, and helper from GitHub 902f58316c643ffbcabc57fc6f15f59d27ec063d","fileCount":5,"zipByteSize":15116},{"version":"1.0.15","createdAt":"2026-09-10T12:35:34.578Z","changelog":"Validate API keys before curl config","fileCount":5,"zipByteSize":15076},{"version":"1.0.14","createdAt":"2026-09-10T12:16:41.805Z","changelog":"Keep API keys out of process arguments","fileCount":5,"zipByteSize":14835},{"version":"1.0.13","createdAt":"2026-09-10T12:07:32.060Z","changelog":"Reject curl local-file query syntax","fileCount":5,"zipByteSize":14732},{"version":"1.0.12","createdAt":"2026-09-10T11:55:38.093Z","changelog":"Stream helper request bodies through curl stdin","fileCount":5,"zipByteSize":14694}]},"execution":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No published capability contract is available yet."},"installCommand":"clawhub skill install s17d53nb8nd03gyyfdy32rgde58e574f:resale-secondhand-research","setupComplexity":"low","setupSteps":["Install using `clawhub skill install s17d53nb8nd03gyyfdy32rgde58e574f:resale-secondhand-research` in an isolated environment before connecting it to live workloads.","No published capability contract is available yet, so validate auth and request/response behavior manually.","Review the upstream CLAWHUB listing at https://clawhub.ai/crawlora-org/resale-secondhand-research before using production credentials."],"contract":{"contractStatus":"missing","authModes":[],"requires":[],"forbidden":[],"supportsMcp":false,"supportsA2a":false,"supportsStreaming":false,"inputSchemaRef":null,"outputSchemaRef":null,"dataRegion":null,"contractUpdatedAt":null,"sourceUpdatedAt":null,"freshnessSeconds":null},"invocationGuide":{"preferredApi":{"snapshotUrl":"https://www.xpersona.co/api/v1/agents/clawhub-crawlora-org-resale-secondhand-research/snapshot","contractUrl":"https://www.xpersona.co/api/v1/agents/clawhub-crawlora-org-resale-secondhand-research/contract","trustUrl":"https://www.xpersona.co/api/v1/agents/clawhub-crawlora-org-resale-secondhand-research/trust"},"curlExamples":["curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-crawlora-org-resale-secondhand-research/snapshot\"","curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-crawlora-org-resale-secondhand-research/contract\"","curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-crawlora-org-resale-secondhand-research/trust\""],"jsonRequestTemplate":{"query":"summarize this repo","constraints":{"maxLatencyMs":2000,"protocolPreference":["OPENCLEW"]}},"jsonResponseTemplate":{"ok":true,"result":{"summary":"...","confidence":0.9},"meta":{"source":"CLAWHUB","generatedAt":"2026-10-11T15:15:30.021Z"}},"retryPolicy":{"maxAttempts":3,"backoffMs":[500,1500,3500],"retryableConditions":["HTTP_429","HTTP_503","NETWORK_TIMEOUT"]}},"endpoints":{"dossierUrl":"https://www.xpersona.co/api/v1/agents/clawhub-crawlora-org-resale-secondhand-research/dossier","snapshotUrl":"https://www.xpersona.co/api/v1/agents/clawhub-crawlora-org-resale-secondhand-research/snapshot","contractUrl":"https://www.xpersona.co/api/v1/agents/clawhub-crawlora-org-resale-secondhand-research/contract","trustUrl":"https://www.xpersona.co/api/v1/agents/clawhub-crawlora-org-resale-secondhand-research/trust"}},"reliability":{"evidence":{"source":"runtime-metrics","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No trust, reliability, or runtime telemetry is available."},"trust":{"status":"unavailable","handshakeStatus":"UNKNOWN","verificationFreshnessHours":null,"reputationScore":null,"p95LatencyMs":null,"successRate30d":null,"fallbackRate":null,"attempts30d":null,"trustUpdatedAt":null,"trustConfidence":"unknown","sourceUpdatedAt":null,"freshnessSeconds":null},"decisionGuardrails":{"doNotUseIf":["Contract metadata is missing or unavailable for deterministic execution."],"safeUseWhen":[],"riskFlags":["missing_or_unavailable_contract","trust_data_unavailable","schema_references_missing"],"operationalConfidence":"low"},"executionMetrics":{"observedLatencyMsP50":null,"observedLatencyMsP95":null,"estimatedCostUsd":null,"uptime30d":null,"rateLimitRpm":null,"rateLimitBurst":null,"lastVerifiedAt":null,"verificationSource":null},"runtimeMetrics":{"successRate":null,"avgLatencyMs":null,"avgCostUsd":null,"hallucinationRate":null,"retryRate":null,"disputeRate":null,"p50Latency":null,"p95Latency":null,"lastUpdated":null}},"benchmarks":{"evidence":{"source":"no-benchmark-data","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No benchmark suites or observed failure patterns are available."},"suites":[],"failurePatterns":[]},"artifacts":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"medium","updatedAt":"2026-10-11T11:57:28.160Z","emptyReason":null},"readme":"Skill: resale-secondhand-research\n\nOwner: crawlora-org\n\nSummary: Researches secondhand, resale, and handmade marketplaces via the Crawlora API — Poshmark, Etsy, Vinted, StockX, Mercari, Depop, Whatnot, GOAT, and Leboncoin — returning clean JSON. Use when the user wants to find or compare listings, check a seller/shop, look up sneaker/streetwear resale prices, or research handmade/vintage goods.\n\nTags: latest:1.0.19\n\nVersion history:\n\nv1.0.19 | 2026-09-29T02:23:16.479Z | user\n\nSync skill instructions, references, and helper from GitHub 4157a1bf7e8583ee9e9d7a264c65c00aee1a1783\n\nv1.0.18 | 2026-09-17T10:20:22.474Z | user\n\nSecurity hardening: generated helpers now enforce exact routes, methods, and credential-safe curl behavior.\n\nv1.0.17 | 2026-09-14T03:39:15.270Z | user\n\nDeclare GOAT and Leboncoin in the skill scope to match the documented endpoint catalog\n\nv1.0.16 | 2026-09-14T02:04:39.261Z | user\n\nSync skill instructions, references, and helper from GitHub 902f58316c643ffbcabc57fc6f15f59d27ec063d\n\nv1.0.15 | 2026-09-10T12:35:34.578Z | user\n\nValidate API keys before curl config\n\nv1.0.14 | 2026-09-10T12:16:41.805Z | user\n\nKeep API keys out of process arguments\n\nv1.0.13 | 2026-09-10T12:07:32.060Z | user\n\nReject curl local-file query syntax\n\nv1.0.12 | 2026-09-10T11:55:38.093Z | user\n\nStream helper request bodies through curl stdin\n\nv1.0.11 | 2026-09-10T11:43:13.321Z | user\n\nScope helper routes and remove secret-shaped key examples\n\nv1.0.10 | 2026-09-10T07:02:13.962Z | user\n\nMigrate publisher from tonywangcn to crawlora-org for brand consistency with the plugins\n\nv1.0.9 | 2026-09-08T04:35:33.144Z | user\n\nRefresh stale REST examples, endpoint references, and Bash helper from crawlora-skills 1.17.1.\n\nv1.0.8 | 2026-09-07T13:35:46.685Z | user\n\nSync via scripts/sync-directories.sh\n\nv1.0.7 | 2026-09-07T08:18:03.962Z | user\n\nSync via scripts/sync-directories.sh\n\nv1.0.6 | 2026-09-07T06:42:54.577Z | user\n\nSync via scripts/sync-directories.sh\n\nv1.0.5 | 2026-08-24T07:20:52.623Z | user\n\nSync via scripts/sync-directories.sh\n\nv1.0.4 | 2026-08-24T06:33:51.479Z | user\n\nSync via scripts/sync-directories.sh\n\nv1.0.3 | 2026-08-24T05:14:37.598Z | user\n\nSync via scripts/sync-directories.sh\n\nv1.0.2 | 2026-08-14T18:32:01.864Z | user\n\nSync via scripts/sync-directories.sh\n\nv1.0.1 | 2026-08-10T18:30:15.593Z | user\n\nSet categories\n\nv1.0.0 | 2026-08-10T18:04:05.521Z | auto\n\n- Initial release of resale-secondhand-research skill.\n- Enables research across seven secondhand, resale, and handmade marketplaces (Poshmark, Etsy, Vinted, StockX, Mercari, Depop, and Whatnot) via the Crawlora API.\n- Returns clean, normalized JSON for listings, sellers, prices, and live shows.\n- Supports queries such as item searches, seller/shop lookups, price comparisons, and handmade/vintage item sourcing.\n- Requires a free Crawlora API key for use.\n\nArchive index:\n\nArchive v1.0.19: 5 files, 14963 bytes\n\nFiles: reference/endpoints.md (38008b), scripts/crawlora.sh (5507b), skill-card.md (1742b), SKILL.md (5684b), _meta.json (146b)\n\nFile v1.0.19:SKILL.md\n\n---\nname: resale-secondhand-research\ndescription: Researches secondhand, resale, and handmade marketplaces via the Crawlora API — Poshmark, Etsy, Vinted, StockX, Mercari, Depop, Whatnot, GOAT, and Leboncoin — returning clean JSON. Use when the user wants to find or compare listings, check a seller/shop, look up sneaker/streetwear resale prices, or research handmade/vintage goods.\n---\n\n# Resale & secondhand marketplace research\n\nSearch listings, sellers, and prices across nine C2C resale, streetwear,\nand handmade marketplaces as normalized JSON from the Crawlora API — no\nscraping app storefronts.\n\n## When to use this skill\n\n- \"Find <item> for sale on <platform>\" / compare listings.\n- \"What's this seller's/shop's closet/storefront like?\"\n- \"What's the resale price for these sneakers?\" (StockX)\n- \"Find handmade/vintage <item>\" (Etsy).\n- \"What's live right now?\" (Whatnot livestream shopping).\n\n## Setup (one-time)\n\n- Get a free Crawlora API key (2,000 credits/mo, no card) at [https://crawlora.net](https://crawlora.net?utm_source=github&utm_medium=referral&utm_campaign=crawlora-skills).\n- Set `CRAWLORA_API_KEY` in the environment before running the helper.\n- The helper reads `CRAWLORA_API_KEY` from the environment and sends requests to `https://api.crawlora.net/api/v1`. Missing/invalid key → `401`.\n\n## How it works\n\n1. **Poshmark** — `/poshmark/search` (`query`) to find listings;\n   `/poshmark/listing/{id}` for detail; `/poshmark/closet/{username}` for a\n   seller's storefront; `/poshmark/brand/{name}` / `/poshmark/category/{path}`\n   to browse.\n2. **Etsy** — `/etsy/search` (`q`) for listings; `/etsy/listing/{id}` (+\n   `/reviews`) for detail; `/etsy/shop/search` / `/etsy/shop/{id}` (+\n   `/listings`, `/reviews`) for a shop's storefront.\n3. **Vinted** — `/vinted/catalog` (`search_text`) for listings;\n   `/vinted/item/{id}` for detail; `/vinted/member/{id}` for a seller;\n   `/vinted/brand`/`/vinted/category` to filter by brand/category id\n   (resolve ids via `/vinted/brands`/`/vinted/categories`).\n4. **StockX** — `/stockx/search` **requires `category`** (e.g. `sneakers`,\n   `apparel`, `collectibles`; `query` is the optional keyword within it) to\n   find a `slug`, then `/stockx/product/{slug}` for market data;\n   `/stockx/releases` for upcoming drops.\n5. **Mercari** — `/mercari/search` (`query`) for listings;\n   `/mercari/item/{id}` for detail; `/mercari/autocomplete` for query suggestions.\n6. **Depop** — `/depop/search` (`query`, plus filters like `brand_ids`,\n   `condition`, `price_min`/`price_max`) for listings; `/depop/item/{slug}`\n   for detail; `/depop/shop/{username}` for a seller's storefront.\n7. **Whatnot** — `/whatnot/browse` **requires `category`** to list live/\n   upcoming shows; `/whatnot/live/{id}` for one livestream's detail.\n8. **GOAT** — `/goat/search` for sneaker, streetwear, and collectible products;\n   `/goat/product/{slug}` for pricing and product detail; `/goat/collection`,\n   `/goat/curated`, `/goat/suggest`, and `/goat/searches/trending` for catalog\n   discovery.\n9. **Leboncoin** — `/leboncoin/search` for public listing cards and\n   `/leboncoin/listing` for one public ad's detail.\n\nFull endpoint list, methods, and params: [`reference/endpoints.md`](reference/endpoints.md).\n\n## Calling the API\n\n```sh\n# Search a marketplace:\nscripts/crawlora.sh /poshmark/search query=\"vintage levis jacket\" | jq '.'\nscripts/crawlora.sh /etsy/search q=\"handmade ceramic mug\" | jq '.'\nscripts/crawlora.sh /vinted/catalog search_text=\"north face jacket\" | jq '.'\n\n# StockX (category required):\nscripts/crawlora.sh /stockx/search category=sneakers query=\"jordan 4\" | jq '.'\n\n# Seller/shop lookup:\nscripts/crawlora.sh /depop/shop/<handle> | jq '.'\n```\n\nUse `scripts/crawlora.sh` for all requests; it keeps the API key out of command-line arguments.\n\n\n## Endpoint reference\n\nSee [`reference/endpoints.md`](reference/endpoints.md) for every Poshmark,\nEtsy, Vinted, StockX, Mercari, Depop, Whatnot, GOAT, and Leboncoin endpoint\nthis skill uses.\n\n## Examples\n\n- **Cross-platform price compare:** search the same item on Poshmark,\n  Depop, Vinted, and Mercari, then diff asking prices.\n- **Sneaker resale check:** `/stockx/search category=sneakers query=\"...\"` →\n  `/stockx/product/{slug}` for current market price vs. retail.\n- **Seller vetting:** `/poshmark/closet/{username}` or `/depop/shop/{username}`\n  before buying, to check listing count and activity.\n- **Handmade sourcing:** `/etsy/search` for a category, then\n  `/etsy/shop/{id}/reviews` on top shops before ordering a custom piece.\n- **Sneaker/streetwear resale:** `/goat/search` to find products, then\n  `/goat/product/{slug}` for current per-size pricing and stock.\n- **French secondhand listings:** `/leboncoin/search` for a public location,\n  then `/leboncoin/listing` for a selected ad.\n\n## Notes & limits\n\n- **Credits / pay-on-success:** billed only on `2xx`; free tier 2,000 credits/mo.\n  Key at [https://crawlora.net](https://crawlora.net?utm_source=github&utm_medium=referral&utm_campaign=crawlora-skills).\n- **Public data only** — public listing/storefront pages; no purchases or\n  offers are made.\n- **Security:** key lives in `CRAWLORA_API_KEY` only — never hardcode, query-param, or commit it.\n- **StockX and Whatnot require a `category`** on their search/browse\n  endpoints — check `reference/endpoints.md` for accepted values before calling.\n- Vinted brand/category filters need numeric ids — resolve via\n  `/vinted/brands`/`/vinted/categories` first if you only have a name.\n- GOAT and Leboncoin calls can also consume Crawlora credits; keep the\n  marketplace and route in the user's requested scope before calling them.\n\nFile v1.0.19:_meta.json\n\n{\n  \"ownerId\": \"kn70shhkf6qpfwgfrbgtep2wkd8c6b4t\",\n  \"slug\": \"resale-secondhand-research\",\n  \"version\": \"1.0.19\",\n  \"publishedAt\": 1790648596479\n}\n\nFile v1.0.19:reference/endpoints.md\n\n# resale-secondhand-research — endpoint reference\n\n> Generated from `scripts/tools.json` by `scripts/generate.mjs` — do not edit by hand.\n\nEndpoints this skill uses, grouped by platform. Call them via `scripts/crawlora.sh` (see SKILL.md).\n\nAll paths are relative to the API base `https://api.crawlora.net/api/v1` and require the header `x-api-key: $CRAWLORA_API_KEY`. Path params like `{id}` are substituted into the URL; `GET` params go in the query string; `POST` params go in a JSON body.\n\n**58 endpoints across 9 platform group(s).**\n\n## Poshmark (8)\n\n### `poshmark_brand`\n\n- **HTTP:** `GET /poshmark/brand/{name}`\n- **What:** Browse Poshmark listings by brand. Returns a page of normalized Poshmark listings for a given brand name (e.g. Nike), the same browsing view as Poshmark's own brand pages. Pass a previous response's next_max_id back as max_id to fetch the next page. Credential-free public data sourced from Poshmark's own server-rendered brand page and, for pages past the first, Poshmark's own JSON pagination API.\n- **Params:** `max_id` (string, optional) — Opaque pagination cursor from a previous response's next_max_id. Omit for the first page; `name` (string, **required**) — Poshmark brand name, matching the path segment of a /brand/{name} URL\n\n### `poshmark_brands`\n\n- **HTTP:** `GET /poshmark/brands`\n- **What:** Get the full Poshmark brand directory. Returns Poshmark's full brand directory: every brand Poshmark recognizes (name, slug, logo, known aliases), not just brands with active listings for a given search or category filter. Useful for resolving a brand name to the exact value the brand/search filters expect. Credential-free public data sourced from Poshmark's own server-rendered brand directory page.\n- **Params:** _none_\n\n### `poshmark_categories`\n\n- **HTTP:** `GET /poshmark/categories`\n- **What:** Get the Poshmark department/category browse taxonomy. Returns Poshmark's full department/category browse taxonomy (e.g. Women > Shoes, Men > Jackets & Coats). Each entry's path resolves directly against the category endpoint. This is reference data that changes rarely, so responses are cached. Credential-free public data sourced from Poshmark's own server-rendered category pages.\n- **Params:** _none_\n\n### `poshmark_category`\n\n- **HTTP:** `GET /poshmark/category/{path}`\n- **What:** Browse Poshmark listings by category. Returns a page of normalized Poshmark listings for a given category path (e.g. Women-Shoes, Men-Shirts), the same browsing view as Poshmark's own category pages. Pass a previous response's next_max_id back as max_id to fetch the next page. Credential-free public data sourced from Poshmark's own server-rendered category page and, for pages past the first, Poshmark's own JSON pagination API.\n- **Params:** `max_id` (string, optional) — Opaque pagination cursor from a previous response's next_max_id. Omit for the first page; `path` (string, **required**) — Poshmark category path segment, e.g. Women-Shoes, Men-Shirts\n\n### `poshmark_closet`\n\n- **HTTP:** `GET /poshmark/closet/{username}`\n- **What:** Get Poshmark seller closet (storefront). Returns a normalized Poshmark closet (seller storefront) page: the seller's public profile and reputation stats (followers, ratings, items sold) plus a first page of their currently available listings and total listing count. Pass a previous response's next_max_id back as max_id to fetch the next page of listings; paginated responses omit the seller profile to avoid a second upstream fetch, so fetch without max_id first to get seller fields. Credential-free public data sourced from Poshmark's own server-rendered closet page and, for pages past the first, Poshmark's own JSON pagination API.\n- **Params:** `max_id` (string, optional) — Opaque pagination cursor from a previous response's next_max_id. Omit for the first page; `username` (string, **required**) — Poshmark seller username, the path segment of a /closet/{username} URL\n\n### `poshmark_listing`\n\n- **HTTP:** `GET /poshmark/listing/{id}`\n- **What:** Get Poshmark listing detail. Returns a normalized Poshmark item-detail page: the full listing (description, all photos, size/brand/condition, inventory), its seller's profile, public comments, and similar listings Poshmark itself surfaces on the same page. Credential-free public data sourced from Poshmark's own server-rendered listing page.\n- **Params:** `id` (string, **required**) — Poshmark listing id, the trailing id segment of a /listing/{slug}-{id} URL\n\n### `poshmark_search`\n\n- **HTTP:** `GET /poshmark/search`\n- **What:** Search Poshmark listings. Searches Poshmark for clothing, shoes, and accessory listings, returning normalized listing summaries (title, price, brand, size, condition, seller, images) plus the total matching count and an opaque pagination cursor. Pass a previous response's next_max_id back as max_id to fetch the next page. Credential-free public data sourced from Poshmark's own server-rendered search page and, for pages past the first, Poshmark's own JSON pagination API.\n- **Params:** `department` (string, optional) — Department filter, e.g. Women, Men, Kids; `max_id` (string, optional) — Opaque pagination cursor from a previous response's next_max_id. Omit for the first page; `query` (string, **required**) — Free-text keyword search\n\n### `poshmark_trend`\n\n- **HTTP:** `GET /poshmark/trend/{id}`\n- **What:** Browse a Poshmark trend/showroom collection. Returns a page of normalized Poshmark listings for a curated trend/showroom collection (e.g. \"Vintage Celine Handbags\"), the same browsing view as Poshmark's own trend pages. Pass a previous response's next_max_id back as max_id to fetch the next page. Credential-free public data sourced from Poshmark's own server-rendered trend page and, for pages past the first, Poshmark's own JSON pagination API.\n- **Params:** `id` (string, **required**) — Poshmark trend/showroom id, the trailing id segment of a /trend/{slug}-{id} URL; `max_id` (string, optional) — Opaque pagination cursor from a previous response's next_max_id. Omit for the first page\n\n## Etsy (7)\n\n### `etsy_listing`\n\n- **HTTP:** `GET /etsy/listing/{id}`\n- **What:** Get Etsy listing detail. Returns Etsy listing detail: title, price, images, materials, tags, and shop.\n- **Params:** `id` (string, **required**) — Numeric Etsy listing id\n\n### `etsy_listing_reviews`\n\n- **HTTP:** `GET /etsy/listing/{id}/reviews`\n- **What:** Get Etsy listing reviews. Returns buyer reviews for an Etsy listing.\n- **Params:** `id` (string, **required**) — Numeric Etsy listing id; `offset` (integer, optional) — 0-based review offset; `sort` (string, optional) — Review sort order\n\n### `etsy_search`\n\n- **HTTP:** `GET /etsy/search`\n- **What:** Search Etsy listings. Returns Etsy product search results across shops for a keyword query.\n- **Params:** `limit` (integer, optional) — Page size (default 36, max 100); `offset` (integer, optional) — 0-based result offset; `q` (string, **required**) — Search keywords\n\n### `etsy_shop`\n\n- **HTTP:** `GET /etsy/shop/{id}`\n- **What:** Get Etsy shop profile. Returns an Etsy shop profile: seller, headline, rating, and sold count. Accepts a numeric shop id or a shop name.\n- **Params:** `id` (string, **required**) — Numeric Etsy shop id or shop name\n\n### `etsy_shop_listings`\n\n- **HTTP:** `GET /etsy/shop/{id}/listings`\n- **What:** Get an Etsy shop's listings. Returns a shop's listing catalog, optionally filtered by keyword. Accepts a numeric shop id or a shop name.\n- **Params:** `id` (string, **required**) — Numeric Etsy shop id or shop name; `limit` (integer, optional) — Page size (default 24); `offset` (integer, optional) — 0-based listing offset; `q` (string, optional) — Keyword filter within the shop's own catalog\n\n### `etsy_shop_reviews`\n\n- **HTTP:** `GET /etsy/shop/{id}/reviews`\n- **What:** Get Etsy shop reviews. Returns buyer reviews for an Etsy shop. Accepts a numeric shop id or a shop name.\n- **Params:** `id` (string, **required**) — Numeric Etsy shop id or shop name; `limit` (integer, optional) — Page size (default 14); `offset` (integer, optional) — 0-based review offset\n\n### `etsy_shop_search`\n\n- **HTTP:** `GET /etsy/shop/search`\n- **What:** Search Etsy shops. Returns Etsy shops matching a keyword.\n- **Params:** `limit` (integer, optional) — Max shops to return (default 10); `q` (string, **required**) — Shop search keyword\n\n## Vinted (7)\n\n### `vinted_brand`\n\n- **HTTP:** `GET /vinted/brand`\n- **What:** Vinted listings for a brand. Returns Vinted listings for a specific brand, with optional price filtering and sort order. `order` values: `relevance`, `newest_first`, `price_high_to_low`, `price_low_to_high`. Public data, sourced from Vinted's own server-rendered brand page.\n- **Params:** `id` (string, **required**) — Numeric Vinted brand ID, from a /vinted/item result's brand link; `order` (string, optional) — Sort order. Allowed values: relevance, newest_first, price_high_to_low, price_low_to_high; `page` (integer, optional) — Page number, starting at 1; `price_from` (number, optional) — Minimum price; `price_to` (number, optional) — Maximum price\n\n### `vinted_brands`\n\n- **HTTP:** `GET /vinted/brands`\n- **What:** Vinted popular-brands directory. Returns Vinted's \"Popular brands\" directory. This is Vinted's own curated list, not an exhaustive list of every brand in its catalog. Each entry's `id` is usable directly as the `id` query parameter to /vinted/brand. Public data, sourced from Vinted's own server-rendered brands page.\n- **Params:** _none_\n\n### `vinted_catalog`\n\n- **HTTP:** `GET /vinted/catalog`\n- **What:** Vinted listing search. Returns Vinted resale listings matching a text search, with optional price filtering and sort order. `order` values: `relevance`, `newest_first`, `price_high_to_low`, `price_low_to_high`. Public data, sourced from Vinted's own server-rendered catalog page.\n- **Params:** `order` (string, optional) — Sort order. Allowed values: relevance, newest_first, price_high_to_low, price_low_to_high; `page` (integer, optional) — Page number, starting at 1; `price_from` (number, optional) — Minimum price; `price_to` (number, optional) — Maximum price; `search_text` (string, **required**) — Search text\n\n### `vinted_categories`\n\n- **HTTP:** `GET /vinted/categories`\n- **What:** Vinted top-level catalog categories. Returns Vinted's top-level catalog categories (e.g. Women, Men, Kids, Home, Electronics, Sports, Entertainment, Hobbies & collectibles). This is the root level only -- Vinted's full category tree goes several levels deeper on the live site, but deeper levels aren't server-rendered so aren't covered here. Each entry's `id` is usable directly as the `id` query parameter to /vinted/category. Public data, sourced from Vinted's own server-rendered catalog navigation.\n- **Params:** _none_\n\n### `vinted_category`\n\n- **HTTP:** `GET /vinted/category`\n- **What:** Vinted listings for a category. Returns Vinted listings for a specific category, with optional price filtering and sort order. `order` values: `relevance`, `newest_first`, `price_high_to_low`, `price_low_to_high`. Public data, sourced from Vinted's own server-rendered category page.\n- **Params:** `id` (string, **required**) — Numeric Vinted category ID, from a /vinted/item result's categories breadcrumb link; `order` (string, optional) — Sort order. Allowed values: relevance, newest_first, price_high_to_low, price_low_to_high; `page` (integer, optional) — Page number, starting at 1; `price_from` (number, optional) — Minimum price; `price_to` (number, optional) — Maximum price\n\n### `vinted_item`\n\n- **HTTP:** `GET /vinted/item`\n- **What:** A single Vinted listing's detail. Returns a single Vinted listing's detail: title, description, brand, size, condition, material, color, price, category breadcrumb, and photos. Public data, sourced from Vinted's own server-rendered item page.\n- **Params:** `id` (string, **required**) — Numeric Vinted item ID, from a /vinted/catalog result's id field\n\n### `vinted_member`\n\n- **HTTP:** `GET /vinted/member`\n- **What:** A Vinted seller's public storefront profile. Returns a Vinted seller's public storefront profile: username, self-disclosed coarse location, rating, and follower/following counts. Deliberately excludes online-presence and activity data (last-seen timestamps, upload-frequency badges) present on the live page. Public data, sourced from Vinted's own server-rendered member page.\n- **Params:** `id` (string, **required**) — Numeric Vinted member ID, from a /vinted/item result's seller link\n\n## StockX (5)\n\n### `stockx_brands`\n\n- **HTTP:** `GET /stockx/brands`\n- **What:** Get StockX brand catalog. Returns StockX's full brand catalog (name and URL slug for every brand in its own brand directory), suitable for building GET /stockx/search's brand parameter or GET /stockx/search's model parameter's required single-brand context. Credential-free public data from the same navigation API backing StockX's own site menu.\n- **Params:** _none_\n\n### `stockx_categories`\n\n- **HTTP:** `GET /stockx/categories`\n- **What:** Get StockX category/subcategory taxonomy. Returns StockX's full category/subcategory reference: the 7 top-level categories accepted by GET /stockx/search's category parameter, each with its subcategories (e.g. Shoes -> Boots, Cleats, Clogs). Credential-free public data from the same navigation API backing StockX's own site menu.\n- **Params:** _none_\n\n### `stockx_product`\n\n- **HTTP:** `GET /stockx/product/{slug}`\n- **What:** Get StockX product detail. Returns a normalized StockX product: identity (title, brand, model, colorway, style id, retail price, release date, description, image), current market data (lowest ask, highest bid, last sale, trailing average price/sales count, delivery-speed ask tiers), individual seller listings (price, condition, size), related-product recommendations (other colorways/siblings StockX surfaces on the product page), and any promotional badges. Credential-free public data from StockX's own product-page GraphQL API.\n- **Params:** `slug` (string, **required**) — StockX product URL slug (the urlKey), the path segment of a https://stockx.com/{slug} product page\n\n### `stockx_releases`\n\n- **HTTP:** `GET /stockx/releases`\n- **What:** Get StockX upcoming release calendar. Returns a date-ordered page (release date ascending) of StockX's upcoming release calendar: new and restocked products releasing on or after the given date, with normalized product summaries, headline pricing, and each item's published release date. Credential-free public data from the same GraphQL API backing StockX's own releases page.\n- **Params:** `from` (string, optional) — Only include releases on or after this date (YYYY-MM-DD, UTC). Defaults to today; `limit` (integer, optional) — Results per page, defaults to 20, maximum 100; `page` (integer, optional) — 1-indexed result page, defaults to 1\n\n### `stockx_search`\n\n- **HTTP:** `GET /stockx/search`\n- **What:** Search/browse StockX products. Browses StockX's product catalog by category with optional free-text keyword search and facet filters (gender, brand, color, shoe height, activity, availability), returning normalized product summaries with headline pricing plus the total matching count. Credential-free public data from the same GraphQL API backing StockX's own category browse pages.\n- **Params:** `activity` (string, optional) — Filter by activity, comma-separated for multiple values; `available_now` (boolean, optional) — Only include products with at least one active ask; `below_retail` (boolean, optional) — Only include products currently trading below original retail price; `brand` (string, optional) — Filter by one or more brand slugs, comma-separated, e.g. jordan,nike; `category` (string, **required**) — StockX top-level category; `color` (string, optional) — Filter by color, comma-separated for multiple values; `gender` (string, optional) — Filter by gender, comma-separated for multiple values; `limit` (integer, optional) — Results per page, defaults to 20, maximum 100; `model` (string, optional) — Filter by a single model slug, e.g. air-force-1. Requires exactly one value in brand; `page` (integer, optional) — 1-indexed result page, defaults to 1; `query` (string, optional) — Free-text keyword search within the category, e.g. a model name or colorway; `shoe_height` (string, optional) — Filter by shoe height, comma-separated for multiple values; `sort` (string, optional) — Result sort order, defaults to featured; `xpress_ship` (boolean, optional) — Only include products with StockX Xpress Ship availability\n\n## Mercari (5)\n\n### `mercari_autocomplete`\n\n- **HTTP:** `GET /mercari/autocomplete`\n- **What:** Mercari search autocomplete. Returns Mercari's own search-suggestion list for a partial keyword, in the upstream's own relevance order. An empty suggestion list is a normal outcome for obscure or gibberish input. Credential-free public data sourced from Mercari's own mobile-app API using an anonymous, login-free session.\n- **Params:** `query` (string, **required**) — Partial keyword to get suggestions for\n\n### `mercari_home`\n\n- **HTTP:** `GET /mercari/home`\n- **What:** Get Mercari home feed. Returns Mercari's own curated home-feed recommendations: normalized listing summaries (title, price, thumbnail, condition, seller). Credential-free public data sourced from Mercari's own mobile-app API using an anonymous, login-free session.\n- **Params:** _none_\n\n### `mercari_item`\n\n- **HTTP:** `GET /mercari/item/{id}`\n- **What:** Get Mercari item detail. Returns a normalized Mercari item-detail page: description, all photos, price, condition, category, hashtags, the shipping origin state, and a \"similar items\" carousel of related listings. Credential-free public data sourced from Mercari's own mobile-app API using an anonymous, login-free session.\n- **Params:** `id` (string, **required**) — Mercari item id, e.g. from a search result's id field\n\n### `mercari_master`\n\n- **HTTP:** `GET /mercari/master`\n- **What:** Get Mercari full taxonomy (categories, brands, sizes). Returns Mercari's full reference taxonomy in one call: every category (with parent linkage), every recognized brand, and every clothing/shoe/apparel size. Large (tens of thousands of brand entries) and effectively static -- cache this response rather than polling it. Credential-free public data sourced from Mercari's own mobile-app API using an anonymous, login-free session.\n- **Params:** _none_\n\n### `mercari_search`\n\n- **HTTP:** `GET /mercari/search`\n- **What:** Search Mercari listings. Searches Mercari's live resale marketplace by free-text keyword, returning normalized listing summaries (title, price, thumbnail, condition, seller) plus the total matching count. Credential-free public data sourced from Mercari's own mobile-app API using an anonymous, login-free session.\n- **Params:** `query` (string, **required**) — Free-text keyword search\n\n## Depop (10)\n\n### `depop_brands`\n\n- **HTTP:** `GET /depop/brands`\n- **What:** Depop's full brand directory. Returns Depop's full brand directory (id, name, slug), not just brands with active listings for a given search -- resolves the search endpoint's otherwise-opaque brand_ids filter to human-readable names. Public data sourced from Depop's own brand-directory API.\n- **Params:** _none_\n\n### `depop_categories`\n\n- **HTTP:** `GET /depop/categories`\n- **What:** Get Depop's category taxonomy. Returns Depop's full department, category, and subcategory taxonomy -- every value usable with /depop/search's and /depop/shop/{username}'s category/subcategory filters. Tries a live refresh from Depop's own category-filter API first and falls back to a static snapshot on any failure, so this never errors.\n- **Params:** _none_\n\n### `depop_item`\n\n- **HTTP:** `GET /depop/item/{slug}`\n- **What:** Get Depop item detail. Returns a normalized Depop item-detail page: description, all photos, price, condition, brand, size, seller info, and a \"similar items\" carousel when the page has one. Public data sourced from Depop's own item pages.\n- **Params:** `slug` (string, **required**) — Depop item URL slug, e.g. from a search result's id field\n\n### `depop_item_similar`\n\n- **HTTP:** `GET /depop/item/{slug}/similar`\n- **What:** Get Depop items similar to a listing. Returns items similar to a given Depop listing, via Depop's dedicated similar-items API -- richer and paginated (up to 150 per page) compared to the small, non-paginated \"similar items\" carousel already included in item detail. Public data sourced from Depop's own similar-items API.\n- **Params:** `after` (string, optional) — Opaque pagination cursor from a previous response's next_cursor field. Omit for the first page.; `limit` (integer, optional) — Max results per page, 1-150; `slug` (string, **required**) — Depop item URL slug, e.g. from a search result's id field\n\n### `depop_search`\n\n- **HTTP:** `GET /depop/search`\n- **What:** Search Depop listings. Searches Depop's resale-fashion marketplace by free-text keyword, with optional price, condition, colour, category, subcategory, gender, kids-department, brand, discount, and sort filters, returning normalized listing summaries (title, price, brand, condition, like count, photos, sizes), a pagination cursor, and the total matching count. Public data sourced from Depop's own search API.\n- **Params:** `after` (string, optional) — Opaque pagination cursor from a previous response's next_cursor field. Omit for the first page.; `brand_ids` (string, optional) — Comma-separated Depop internal numeric brand ids. Not documented by Depop -- find a brand's id by browsing its depop.com/brands/<slug>/ page.; `category` (string, optional) — Depop category slug: tops, bottoms, dresses, coats-jackets, jumpsuit-and-playsuit, suits, footwear, accessories, nightwear, underwear, swim-beach-wear, fancy-dress, sleepsuits-and-bodysuits, bundles, beauty, face-masks, home, tech-accessories, film, art, books-and-magazine, music, party-supplies, sports-equipment-accesories, toys, umbrella. See GET /depop/categories for a machine-readable enumeration with names and subcategories.; `colours` (string, optional) — Comma-separated colour filter: black, grey, white, brown, tan, cream, yellow, red, burgundy, orange, pink, purple, blue, navy, green, khaki, multi; `condition` (string, optional) — Comma-separated condition filter: brand_new, used_like_new, used_excellent, used_good, used_fair; `gender` (string, optional) — Department filter: female, male; `is_kids` (boolean, optional) — Kids-department filter: true restricts results to kids items only, false excludes them, omitted returns both.; `on_sale` (boolean, optional) — Restrict results to discounted listings; `price_max` (number, optional) — Maximum listing price in USD; `price_min` (number, optional) — Minimum listing price in USD; `query` (string, **required**) — Free-text keyword search; `sizes` (string, optional) — Comma-separated Depop size composite ids (format {size_set_id}.{id}, e.g. \\; `sort` (string, optional) — Sort order: relevance, price_low_to_high, price_high_to_low; `subcategory` (string, optional) — Comma-separated Depop subcategory slug(s), scoped within category. See GET /depop/categories for the full list per category.\n\n### `depop_search_facets`\n\n- **HTTP:** `GET /depop/search/facets`\n- **What:** Depop search result-count breakdowns. Returns result-count breakdowns per department/category/subcategory for a search query, via Depop's dedicated aggregates API -- a distinct upstream call from search itself, not embedded in its response. Public data sourced from Depop's own search-aggregates API.\n- **Params:** `query` (string, **required**) — Free-text keyword search\n\n### `depop_search_sellers`\n\n- **HTTP:** `GET /depop/search-sellers`\n- **What:** Search Depop sellers by name. Finds Depop users/sellers by name or username. A matched result's username can be passed directly to GET /depop/shop/{username} for that seller's full shop. Public data sourced from Depop's own user-search API.\n- **Params:** `query` (string, **required**) — Seller name or username to search for\n\n### `depop_shop`\n\n- **HTTP:** `GET /depop/shop/{username}`\n- **What:** Get a Depop seller's shop. Returns a Depop seller's public shop: profile (rating, sold count, followers, bio) plus current listings, with optional price, condition, colour, category, subcategory, gender, discount, and sort filters. Public data sourced from Depop's own shop pages.\n- **Params:** `category` (string, optional) — Depop category slug: tops, bottoms, dresses, coats-jackets, jumpsuit-and-playsuit, suits, footwear, accessories, nightwear, underwear, swim-beach-wear, fancy-dress, sleepsuits-and-bodysuits, bundles, beauty, face-masks, home, tech-accessories, film, art, books-and-magazine, music, party-supplies, sports-equipment-accesories, toys, umbrella. See GET /depop/categories for a machine-readable enumeration with names and subcategories.; `colours` (string, optional) — Comma-separated colour filter: black, grey, white, brown, tan, cream, yellow, red, burgundy, orange, pink, purple, blue, navy, green, khaki, multi; `condition` (string, optional) — Comma-separated condition filter: brand_new, used_like_new, used_excellent, used_good, used_fair; `gender` (string, optional) — Department filter: female, male; `on_sale` (boolean, optional) — Restrict results to discounted listings; `price_max` (number, optional) — Maximum listing price in USD; `price_min` (number, optional) — Minimum listing price in USD; `sizes` (string, optional) — Comma-separated Depop size composite ids (format {size_set_id}.{id}, e.g. \\; `sort` (string, optional) — Sort order: relevance, price_low_to_high, price_high_to_low, recently_listed; `subcategory` (string, optional) — Comma-separated Depop subcategory slug(s), scoped within category. See GET /depop/categories for the full list per category.; `username` (string, **required**) — Depop seller username, e.g. from a shop page URL segment\n\n### `depop_sizes`\n\n- **HTTP:** `GET /depop/sizes`\n- **What:** Get Depop's size taxonomy. Returns Depop's full, multi-region size taxonomy -- every composite id usable with /depop/search's and /depop/shop/{username}'s sizes filter. Public data sourced from Depop's own size-filter API.\n- **Params:** _none_\n\n### `depop_suggest`\n\n- **HTTP:** `GET /depop/suggest`\n- **What:** Depop search-box autocomplete. Returns Depop's own search-box autocomplete suggestions for a partial query, including the category a suggestion maps to when relevant. Public data sourced from Depop's own search-suggestions API.\n- **Params:** `query` (string, **required**) — Partial search query to autocomplete\n\n## Whatnot (4)\n\n### `whatnot_browse`\n\n- **HTTP:** `GET /whatnot/browse`\n- **What:** Browse Whatnot live shows by category. Returns the live and upcoming shows currently listed under a Whatnot category: seller, title, status, start time, thumbnail, and tags. Public data sourced from Whatnot's own GraphQL API.\n- **Params:** `category` (string, **required**) — Whatnot category slug. See GET /whatnot/categories for the full list.\n\n### `whatnot_categories`\n\n- **HTTP:** `GET /whatnot/categories`\n- **What:** Get Whatnot's category list. Returns Whatnot's full top-level category list (e.g. \"Trading Card Games\", \"Sneakers & Streetwear\"). Each entry's slug is usable directly with /whatnot/browse's category filter. Public data sourced from Whatnot's own GraphQL API.\n- **Params:** _none_\n\n### `whatnot_live`\n\n- **HTTP:** `GET /whatnot/live/{id}`\n- **What:** Get a Whatnot live show's current shop feed. Returns a Whatnot live show's current shop feed: every product, auction, and giveaway listing currently visible in the show, each with its seller's rating. Public data sourced from Whatnot's own GraphQL API.\n- **Params:** `id` (string, **required**) — Whatnot live show id, e.g. from a browse result's id field\n\n### `whatnot_seller`\n\n- **HTTP:** `GET /whatnot/seller/{username}`\n- **What:** Get a Whatnot seller profile and shows. Returns public seller profile details and one page of the seller's livestreams. Use next_cursor as cursor to continue while has_more is true. The endpoint does not include shop products.\n- **Params:** `cursor` (string, optional) — Opaque cursor from a prior response's next_cursor; `username` (string, **required**) — Whatnot seller username\n\n## GOAT (10)\n\n### `goat_collection`\n\n- **HTTP:** `GET /goat/collection`\n- **What:** Get a GOAT curated product collection. Returns a page of one of GOAT's curated product collections (an editorial rail like \"top trending\" or \"new arrivals\"), the same call GOAT's own product-page \"you may also like\" rails and homepage modules use. Collection slugs are not enumerable by this API -- capture one from a live GOAT page. Credential-free public data.\n- **Params:** `exclude_product_ids` (string, optional) — Omit specific products by id, comma-separated; `limit` (integer, optional) — Results per page, defaults to 12, maximum 100; `page` (integer, optional) — 1-indexed result page, defaults to 1; `slug` (string, **required**) — GOAT collection slug, e.g. as seen in a curated rail on GOAT's own site\n\n### `goat_countries`\n\n- **HTTP:** `GET /goat/countries`\n- **What:** Get GOAT countries. Returns every country GOAT recognizes -- the accepted values for GET /goat/product/{slug}'s country_code parameter -- with the currency and size unit (us, uk, eu) GOAT localizes to for each, plus whether GOAT ships and accepts returns there. Every country is listed, not only the shippable ones, because country_code localizes pricing and is accepted for all of them; filter on ships_to if you want only GOAT's shipping destinations. Credential-free public data.\n- **Params:** _none_\n\n### `goat_curated`\n\n- **HTTP:** `GET /goat/curated`\n- **What:** Get GOAT curated links. Returns the shelf of editorially curated links GOAT is currently promoting in its own search box: seasonal collections, specific product searches, and browse-all entry points. Every link is actionable against this API -- a collection link carries a value for GET /goat/collection, a search link carries a query for GET /goat/search. Credential-free public data.\n- **Params:** _none_\n\n### `goat_listings_count`\n\n- **HTTP:** `GET /goat/listings/count`\n- **What:** Get GOAT live listing count. Returns how many listings GOAT currently has live across its whole marketplace. This is the only way to see GOAT's true catalog size, because GET /goat/search's total_results saturates at 10000 on a broad query and cannot report a total above that ceiling. Credential-free public data.\n- **Params:** _none_\n\n### `goat_product`\n\n- **HTTP:** `GET /goat/product/{slug}`\n- **What:** Get GOAT product detail. Returns a normalized GOAT product: identity/descriptive metadata (name, brand, SKU, colorway, designer, silhouette, taxonomy, materials, release date, retail price, editorial story, images, full size range, other products featured alongside it), plus live per-size/condition pricing and stock status (lowest price, GOAT Instant Ship price, last sold price, highest current buyer offer). Credential-free public data combining GOAT's own product-page payload with its live pricing and offers APIs.\n- **Params:** `country_code` (string, optional) — ISO 3166-1 alpha-2 country code used to localize per-size pricing, defaults to US; `slug` (string, **required**) — GOAT product URL slug, the path segment of a https://www.goat.com/sneakers/{slug} product page\n\n### `goat_product_recommended`\n\n- **HTTP:** `GET /goat/product/{slug}/recommended`\n- **What:** Get GOAT recommended products for a product. Returns the recommended/related products GOAT's own product page shows for a given product (other colorways, similar products) -- descriptive metadata only, no live pricing. Credential-free public data from GOAT's own product-page recommendation API.\n- **Params:** `count` (integer, optional) — Number of recommended products to return, defaults to 8, maximum 24; `slug` (string, **required**) — GOAT product URL slug to find related products for\n\n### `goat_search`\n\n- **HTTP:** `GET /goat/search`\n- **What:** Search GOAT products. Searches or browses GOAT's sneaker/streetwear/collectibles catalog by free-text query and/or facet filters (category, footwear sub-type, activity, color, gender, condition, brand, release year, price range, release-date range, silhouette, designer, in-stock/under-retail/instant-ship, curated collection), returning normalized product summaries (brand, silhouette, category, image, stock status, headline pricing across all sizes) plus the total matching count. Query is optional -- a facet filter alone browses the catalog the same way GOAT's own category/brand pages do. Credential-free public data from the same JSON API backing GOAT's own search page.\n- **Params:** `activities` (string, optional) — Filter by activity (sneakers only), comma-separated for multiple values; `brands` (string, optional) — Filter by one or more brand slugs, comma-separated, e.g. air-jordan,nike. GET /goat/search/facets lists GOAT's top brands; long-tail brands are valid here even when absent from that list; `categories` (string, optional) — Filter by category, comma-separated for multiple values. See GET /goat/search/facets for the current live list; `collection_slug` (string, optional) — Scope results to a GOAT curated collection (see GET /goat/collection), combinable with query, every other filter, and sort; `colors` (string, optional) — Filter by color, comma-separated for multiple values; `conditions` (string, optional) — Filter by item condition, comma-separated for multiple values; `designers` (string, optional) — Filter by one or more designers, comma-separated, matching GOAT's own naming (see a product's designer field); `genders` (string, optional) — Filter by gender, comma-separated for multiple values; `in_stock` (boolean, optional) — Only include products currently in stock; `instant_ship` (boolean, optional) — Only include products with GOAT Instant Ship availability; `limit` (integer, optional) — Results per page, defaults to 12, maximum 100; `page` (integer, optional) — 1-indexed result page, defaults to 1; `price_cents_max` (integer, optional) — Only include results priced at or below this amount, in cents; `price_cents_min` (integer, optional) — Only include results priced at or above this amount, in cents; `product_types` (string, optional) — Filter by footwear sub-type, comma-separated for multiple values; `query` (string, optional) — Free-text search query, e.g. a model name, colorway, or style code. Optional -- omit to browse by facet filters alone; `released_after` (string, optional) — Only include products released on or after this date (YYYY-MM-DD, UTC); `released_before` (string, optional) — Only include products released on or before this date (YYYY-MM-DD, UTC); `silhouettes` (string, optional) — Filter by one or more silhouettes, comma-separated, matching GOAT's own naming (see a product's silhouette field); `sort` (string, optional) — Result sort order, defaults to relevance; `under_retail` (boolean, optional) — Only include products currently trading below original retail price; `years` (string, optional) — Filter by season year(s), comma-separated, e.g. 2025,2026. See GET /goat/search/facets for the current live list\n\n### `goat_search_facets`\n\n- **HTTP:** `GET /goat/search/facets`\n- **What:** Get GOAT search facet values. Returns the accepted values for goat_search's filter parameters: categories, colors, genders, conditions, brands, and years are read live from GOAT's own search API so a value GOAT adds is discoverable without any client-side change, while product_types and activities are served from a maintained list because GOAT exposes no live facet for them. brands is GOAT's top brands ordered by product count, not the complete brand list -- when brands_truncated is true, brands beyond the ones listed exist and remain valid goat_search values. Credential-free public data.\n- **Params:** _none_\n\n### `goat_suggest`\n\n- **HTTP:** `GET /goat/suggest`\n- **What:** Autocomplete a GOAT search. Returns GOAT's own search-box autocomplete for a partial query: matching curated collections and matching products. The collections carry the slug values accepted by GET /goat/collection and by GET /goat/search's collection_slug parameter, making this the way to discover collection slugs. Credential-free public data.\n- **Params:** `limit` (integer, optional) — Maximum curated collections to return. Defaults to 8, maximum 20. Does not affect the product count, which upstream fixes at 25; `query` (string, **required**) — Partial search text to autocomplete\n\n### `goat_trending_searches`\n\n- **HTTP:** `GET /goat/searches/trending`\n- **What:** Get GOAT trending searches. Returns the search terms GOAT is currently surfacing as popular, in GOAT's own ranking order -- the same list its own search box shows. Each term is free text ready to pass to GET /goat/search's query parameter. Credential-free public data.\n- **Params:** _none_\n\n## Leboncoin (2)\n\n### `leboncoin_listing`\n\n- **HTTP:** `GET /leboncoin/listing`\n- **What:** Get a Leboncoin public listing. Returns normalized public metadata for one supplied Leboncoin ad URL. It excludes seller identity and contacts, precise location, payment, delivery, and account data.\n- **Params:** `url` (string, **required**) — Canonical public ad URL returned by leboncoin-search\n\n### `leboncoin_search`\n\n- **HTTP:** `GET /leboncoin/search`\n- **What:** Search Leboncoin public listings. Returns normalized public listing cards from one Leboncoin location page. This endpoint excludes contacts, seller profiles, accounts, and transaction data.\n- **Params:** `location` (string, **required**) — Public Leboncoin location slug\n\nFile v1.0.19:skill-card.md\n\n## Description:\n\nResearches public secondhand, resale, and handmade listings, sellers, and prices across nine marketplaces through the Crawlora API.\n\nThis skill is ready for commercial/non-commercial use.\n\n## Publisher:\n\n[crawlora-org](https://clawhub.ai/user/crawlora-org)\n\n### License/Terms of Use:\n\nMIT-0\n\n## Use Case:\n\nShoppers, resellers, and researchers use this skill to find and compare public listings, inspect shops and sellers, and check resale prices across supported marketplaces.\n\n### Deployment Geography for Use:\n\nGlobal\n\n## Known Risks and Mitigations:\n\nRisk: Marketplace searches and the Crawlora API key are sent to Crawlora.\n\nMitigation: Use the skill only when that disclosure is acceptable; keep the key in the environment and never commit it.\n\nRisk: Unnecessary marketplace or route requests may consume API credits.\n\nMitigation: Limit requests to the marketplaces and routes the user asked for.\n\n## Reference(s):\n\n- [ClawHub skill listing](https://clawhub.ai/crawlora-org/skills/resale-secondhand-research)\n- [Supported API endpoints](reference/endpoints.md)\n\n## Skill Output:\n\n**Output Type(s):** [Text, Guidance, Shell commands]\n\n**Output Format:** [JSON from marketplace queries; Markdown or plain-text research summaries]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [Public listing, seller, and pricing results; API requests may consume Crawlora credits.]\n\n## Skill Version(s):\n\n1.0.19 (source: ClawHub release metadata)\n\n## Ethical Considerations:\n\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment.\n\nArchive v1.0.18: 5 files, 15015 bytes\n\nFiles: reference/endpoints.md (37542b), scripts/crawlora.sh (5479b), skill-card.md (2049b), SKILL.md (5684b), _meta.json (146b)\n\nFile v1.0.18:SKILL.md\n\n---\nname: resale-secondhand-research\ndescription: Researches secondhand, resale, and handmade marketplaces via the Crawlora API — Poshmark, Etsy, Vinted, StockX, Mercari, Depop, Whatnot, GOAT, and Leboncoin — returning clean JSON. Use when the user wants to find or compare listings, check a seller/shop, look up sneaker/streetwear resale prices, or research handmade/vintage goods.\n---\n\n# Resale & secondhand marketplace research\n\nSearch listings, sellers, and prices across nine C2C resale, streetwear,\nand handmade marketplaces as normalized JSON from the Crawlora API — no\nscraping app storefronts.\n\n## When to use this skill\n\n- \"Find <item> for sale on <platform>\" / compare listings.\n- \"What's this seller's/shop's closet/storefront like?\"\n- \"What's the resale price for these sneakers?\" (StockX)\n- \"Find handmade/vintage <item>\" (Etsy).\n- \"What's live right now?\" (Whatnot livestream shopping).\n\n## Setup (one-time)\n\n- Get a free Crawlora API key (2,000 credits/mo, no card) at [https://crawlora.net](https://crawlora.net?utm_source=github&utm_medium=referral&utm_campaign=crawlora-skills).\n- Set `CRAWLORA_API_KEY` in the environment before running the helper.\n- The helper reads `CRAWLORA_API_KEY` from the environment and sends requests to `https://api.crawlora.net/api/v1`. Missing/invalid key → `401`.\n\n## How it works\n\n1. **Poshmark** — `/poshmark/search` (`query`) to find listings;\n   `/poshmark/listing/{id}` for detail; `/poshmark/closet/{username}` for a\n   seller's storefront; `/poshmark/brand/{name}` / `/poshmark/category/{path}`\n   to browse.\n2. **Etsy** — `/etsy/search` (`q`) for listings; `/etsy/listing/{id}` (+\n   `/reviews`) for detail; `/etsy/shop/search` / `/etsy/shop/{id}` (+\n   `/listings`, `/reviews`) for a shop's storefront.\n3. **Vinted** — `/vinted/catalog` (`search_text`) for listings;\n   `/vinted/item/{id}` for detail; `/vinted/member/{id}` for a seller;\n   `/vinted/brand`/`/vinted/category` to filter by brand/category id\n   (resolve ids via `/vinted/brands`/`/vinted/categories`).\n4. **StockX** — `/stockx/search` **requires `category`** (e.g. `sneakers`,\n   `apparel`, `collectibles`; `query` is the optional keyword within it) to\n   find a `slug`, then `/stockx/product/{slug}` for market data;\n   `/stockx/releases` for upcoming drops.\n5. **Mercari** — `/mercari/search` (`query`) for listings;\n   `/mercari/item/{id}` for detail; `/mercari/autocomplete` for query suggestions.\n6. **Depop** — `/depop/search` (`query`, plus filters like `brand_ids`,\n   `condition`, `price_min`/`price_max`) for listings; `/depop/item/{slug}`\n   for detail; `/depop/shop/{username}` for a seller's storefront.\n7. **Whatnot** — `/whatnot/browse` **requires `category`** to list live/\n   upcoming shows; `/whatnot/live/{id}` for one livestream's detail.\n8. **GOAT** — `/goat/search` for sneaker, streetwear, and collectible products;\n   `/goat/product/{slug}` for pricing and product detail; `/goat/collection`,\n   `/goat/curated`, `/goat/suggest`, and `/goat/searches/trending` for catalog\n   discovery.\n9. **Leboncoin** — `/leboncoin/search` for public listing cards and\n   `/leboncoin/listing` for one public ad's detail.\n\nFull endpoint list, methods, and params: [`reference/endpoints.md`](reference/endpoints.md).\n\n## Calling the API\n\n```sh\n# Search a marketplace:\nscripts/crawlora.sh /poshmark/search query=\"vintage levis jacket\" | jq '.'\nscripts/crawlora.sh /etsy/search q=\"handmade ceramic mug\" | jq '.'\nscripts/crawlora.sh /vinted/catalog search_text=\"north face jacket\" | jq '.'\n\n# StockX (category required):\nscripts/crawlora.sh /stockx/search category=sneakers query=\"jordan 4\" | jq '.'\n\n# Seller/shop lookup:\nscripts/crawlora.sh /depop/shop/<handle> | jq '.'\n```\n\nUse `scripts/crawlora.sh` for all requests; it keeps the API key out of command-line arguments.\n\n\n## Endpoint reference\n\nSee [`reference/endpoints.md`](reference/endpoints.md) for every Poshmark,\nEtsy, Vinted, StockX, Mercari, Depop, Whatnot, GOAT, and Leboncoin endpoint\nthis skill uses.\n\n## Examples\n\n- **Cross-platform price compare:** search the same item on Poshmark,\n  Depop, Vinted, and Mercari, then diff asking prices.\n- **Sneaker resale check:** `/stockx/search category=sneakers query=\"...\"` →\n  `/stockx/product/{slug}` for current market price vs. retail.\n- **Seller vetting:** `/poshmark/closet/{username}` or `/depop/shop/{username}`\n  before buying, to check listing count and activity.\n- **Handmade sourcing:** `/etsy/search` for a category, then\n  `/etsy/shop/{id}/reviews` on top shops before ordering a custom piece.\n- **Sneaker/streetwear resale:** `/goat/search` to find products, then\n  `/goat/product/{slug}` for current per-size pricing and stock.\n- **French secondhand listings:** `/leboncoin/search` for a public location,\n  then `/leboncoin/listing` for a selected ad.\n\n## Notes & limits\n\n- **Credits / pay-on-success:** billed only on `2xx`; free tier 2,000 credits/mo.\n  Key at [https://crawlora.net](https://crawlora.net?utm_source=github&utm_medium=referral&utm_campaign=crawlora-skills).\n- **Public data only** — public listing/storefront pages; no purchases or\n  offers are made.\n- **Security:** key lives in `CRAWLORA_API_KEY` only — never hardcode, query-param, or commit it.\n- **StockX and Whatnot require a `category`** on their search/browse\n  endpoints — check `reference/endpoints.md` for accepted values before calling.\n- Vinted brand/category filters need numeric ids — resolve via\n  `/vinted/brands`/`/vinted/categories` first if you only have a name.\n- GOAT and Leboncoin calls can also consume Crawlora credits; keep the\n  marketplace and route in the user's requested scope before calling them.\n\nFile v1.0.18:_meta.json\n\n{\n  \"ownerId\": \"kn70shhkf6qpfwgfrbgtep2wkd8c6b4t\",\n  \"slug\": \"resale-secondhand-research\",\n  \"version\": \"1.0.18\",\n  \"publishedAt\": 1789640422474\n}\n\nFile v1.0.18:reference/endpoints.md\n\n# resale-secondhand-research — endpoint reference\n\n> Generated from `scripts/tools.json` by `scripts/generate.mjs` — do not edit by hand.\n\nEndpoints this skill uses, grouped by platform. Call them via `scripts/crawlora.sh` (see SKILL.md).\n\nAll paths are relative to the API base `https://api.crawlora.net/api/v1` and require the header `x-api-key: $CRAWLORA_API_KEY`. Path params like `{id}` are substituted into the URL; `GET` params go in the query string; `POST` params go in a JSON body.\n\n**57 endpoints across 9 platform group(s).**\n\n## Poshmark (8)\n\n### `poshmark_brand`\n\n- **HTTP:** `GET /poshmark/brand/{name}`\n- **What:** Browse Poshmark listings by brand. Returns a page of normalized Poshmark listings for a given brand name (e.g. Nike), the same browsing view as Poshmark's own brand pages. Pass a previous response's next_max_id back as max_id to fetch the next page. Credential-free public data sourced from Poshmark's own server-rendered brand page and, for pages past the first, Poshmark's own JSON pagination API.\n- **Params:** `max_id` (string, optional) — Opaque pagination cursor from a previous response's next_max_id. Omit for the first page; `name` (string, **required**) — Poshmark brand name, matching the path segment of a /brand/{name} URL\n\n### `poshmark_brands`\n\n- **HTTP:** `GET /poshmark/brands`\n- **What:** Get the full Poshmark brand directory. Returns Poshmark's full brand directory: every brand Poshmark recognizes (name, slug, logo, known aliases), not just brands with active listings for a given search or category filter. Useful for resolving a brand name to the exact value the brand/search filters expect. Credential-free public data sourced from Poshmark's own server-rendered brand directory page.\n- **Params:** _none_\n\n### `poshmark_categories`\n\n- **HTTP:** `GET /poshmark/categories`\n- **What:** Get the Poshmark department/category browse taxonomy. Returns Poshmark's full department/category browse taxonomy (e.g. Women > Shoes, Men > Jackets & Coats). Each entry's path resolves directly against the category endpoint. This is reference data that changes rarely, so responses are cached. Credential-free public data sourced from Poshmark's own server-rendered category pages.\n- **Params:** _none_\n\n### `poshmark_category`\n\n- **HTTP:** `GET /poshmark/category/{path}`\n- **What:** Browse Poshmark listings by category. Returns a page of normalized Poshmark listings for a given category path (e.g. Women-Shoes, Men-Shirts), the same browsing view as Poshmark's own category pages. Pass a previous response's next_max_id back as max_id to fetch the next page. Credential-free public data sourced from Poshmark's own server-rendered category page and, for pages past the first, Poshmark's own JSON pagination API.\n- **Params:** `max_id` (string, optional) — Opaque pagination cursor from a previous response's next_max_id. Omit for the first page; `path` (string, **required**) — Poshmark category path segment, e.g. Women-Shoes, Men-Shirts\n\n### `poshmark_closet`\n\n- **HTTP:** `GET /poshmark/closet/{username}`\n- **What:** Get Poshmark seller closet (storefront). Returns a normalized Poshmark closet (seller storefront) page: the seller's public profile and reputation stats (followers, ratings, items sold) plus a first page of their currently available listings and total listing count. Pass a previous response's next_max_id back as max_id to fetch the next page of listings; paginated responses omit the seller profile to avoid a second upstream fetch, so fetch without max_id first to get seller fields. Credential-free public data sourced from Poshmark's own server-rendered closet page and, for pages past the first, Poshmark's own JSON pagination API.\n- **Params:** `max_id` (string, optional) — Opaque pagination cursor from a previous response's next_max_id. Omit for the first page; `username` (string, **required**) — Poshmark seller username, the path segment of a /closet/{username} URL\n\n### `poshmark_listing`\n\n- **HTTP:** `GET /poshmark/listing/{id}`\n- **What:** Get Poshmark listing detail. Returns a normalized Poshmark item-detail page: the full listing (description, all photos, size/brand/condition, inventory), its seller's profile, public comments, and similar listings Poshmark itself surfaces on the same page. Credential-free public data sourced from Poshmark's own server-rendered listing page.\n- **Params:** `id` (string, **required**) — Poshmark listing id, the trailing id segment of a /listing/{slug}-{id} URL\n\n### `poshmark_search`\n\n- **HTTP:** `GET /poshmark/search`\n- **What:** Search Poshmark listings. Searches Poshmark for clothing, shoes, and accessory listings, returning normalized listing summaries (title, price, brand, size, condition, seller, images) plus the total matching count and an opaque pagination cursor. Pass a previous response's next_max_id back as max_id to fetch the next page. Credential-free public data sourced from Poshmark's own server-rendered search page and, for pages past the first, Poshmark's own JSON pagination API.\n- **Params:** `department` (string, optional) — Department filter, e.g. Women, Men, Kids; `max_id` (string, optional) — Opaque pagination cursor from a previous response's next_max_id. Omit for the first page; `query` (string, **required**) — Free-text keyword search\n\n### `poshmark_trend`\n\n- **HTTP:** `GET /poshmark/trend/{id}`\n- **What:** Browse a Poshmark trend/showroom collection. Returns a page of normalized Poshmark listings for a curated trend/showroom collection (e.g. \"Vintage Celine Handbags\"), the same browsing view as Poshmark's own trend pages. Pass a previous response's next_max_id back as max_id to fetch the next page. Credential-free public data sourced from Poshmark's own server-rendered trend page and, for pages past the first, Poshmark's own JSON pagination API.\n- **Params:** `id` (string, **required**) — Poshmark trend/showroom id, the trailing id segment of a /trend/{slug}-{id} URL; `max_id` (string, optional) — Opaque pagination cursor from a previous response's next_max_id. Omit for the first page\n\n## Etsy (7)\n\n### `etsy_listing`\n\n- **HTTP:** `GET /etsy/listing/{id}`\n- **What:** Get Etsy listing detail. Returns Etsy listing detail: title, price, images, materials, tags, and shop.\n- **Params:** `id` (string, **required**) — Numeric Etsy listing id\n\n### `etsy_listing_reviews`\n\n- **HTTP:** `GET /etsy/listing/{id}/reviews`\n- **What:** Get Etsy listing reviews. Returns buyer reviews for an Etsy listing.\n- **Params:** `id` (string, **required**) — Numeric Etsy listing id; `offset` (integer, optional) — 0-based review offset; `sort` (string, optional) — Review sort order\n\n### `etsy_search`\n\n- **HTTP:** `GET /etsy/search`\n- **What:** Search Etsy listings. Returns Etsy product search results across shops for a keyword query.\n- **Params:** `limit` (integer, optional) — Page size (default 36, max 100); `offset` (integer, optional) — 0-based result offset; `q` (string, **required**) — Search keywords\n\n### `etsy_shop`\n\n- **HTTP:** `GET /etsy/shop/{id}`\n- **What:** Get Etsy shop profile. Returns an Etsy shop profile: seller, headline, rating, and sold count. Accepts a numeric shop id or a shop name.\n- **Params:** `id` (string, **required**) — Numeric Etsy shop id or shop name\n\n### `etsy_shop_listings`\n\n- **HTTP:** `GET /etsy/shop/{id}/listings`\n- **What:** Get an Etsy shop's listings. Returns a shop's listing catalog, optionally filtered by keyword. Accepts a numeric shop id or a shop name.\n- **Params:** `id` (string, **required**) — Numeric Etsy shop id or shop name; `limit` (integer, optional) — Page size (default 24); `offset` (integer, optional) — 0-based listing offset; `q` (string, optional) — Keyword filter within the shop's own catalog\n\n### `etsy_shop_reviews`\n\n- **HTTP:** `GET /etsy/shop/{id}/reviews`\n- **What:** Get Etsy shop reviews. Returns buyer reviews for an Etsy shop. Accepts a numeric shop id or a shop name.\n- **Params:** `id` (string, **required**) — Numeric Etsy shop id or shop name; `limit` (integer, optional) — Page size (default 14); `offset` (integer, optional) — 0-based review offset\n\n### `etsy_shop_search`\n\n- **HTTP:** `GET /etsy/shop/search`\n- **What:** Search Etsy shops. Returns Etsy shops matching a keyword.\n- **Params:** `limit` (integer, optional) — Max shops to return (default 10); `q` (string, **required**) — Shop search keyword\n\n## Vinted (7)\n\n### `vinted_brand`\n\n- **HTTP:** `GET /vinted/brand`\n- **What:** Vinted listings for a brand. Returns Vinted listings for a specific brand, with optional price filtering and sort order. `order` values: `relevance`, `newest_first`, `price_high_to_low`, `price_low_to_high`. Public data, sourced from Vinted's own server-rendered brand page.\n- **Params:** `id` (string, **required**) — Numeric Vinted brand ID, from a /vinted/item result's brand link; `order` (string, optional) — Sort order. Allowed values: relevance, newest_first, price_high_to_low, price_low_to_high; `page` (integer, optional) — Page number, starting at 1; `price_from` (number, optional) — Minimum price; `price_to` (number, optional) — Maximum price\n\n### `vinted_brands`\n\n- **HTTP:** `GET /vinted/brands`\n- **What:** Vinted popular-brands directory. Returns Vinted's \"Popular brands\" directory. This is Vinted's own curated list, not an exhaustive list of every brand in its catalog. Each entry's `id` is usable directly as the `id` query parameter to /vinted/brand. Public data, sourced from Vinted's own server-rendered brands page.\n- **Params:** _none_\n\n### `vinted_catalog`\n\n- **HTTP:** `GET /vinted/catalog`\n- **What:** Vinted listing search. Returns Vinted resale listings matching a text search, with optional price filtering and sort order. `order` values: `relevance`, `newest_first`, `price_high_to_low`, `price_low_to_high`. Public data, sourced from Vinted's own server-rendered catalog page.\n- **Params:** `order` (string, optional) — Sort order. Allowed values: relevance, newest_first, price_high_to_low, price_low_to_high; `page` (integer, optional) — Page number, starting at 1; `price_from` (number, optional) — Minimum price; `price_to` (number, optional) — Maximum price; `search_text` (string, **required**) — Search text\n\n### `vinted_categories`\n\n- **HTTP:** `GET /vinted/categories`\n- **What:** Vinted top-level catalog categories. Returns Vinted's top-level catalog categories (e.g. Women, Men, Kids, Home, Electronics, Sports, Entertainment, Hobbies & collectibles). This is the root level only -- Vinted's full category tree goes several levels deeper on the live site, but deeper levels aren't server-rendered so aren't covered here. Each entry's `id` is usable directly as the `id` query parameter to /vinted/category. Public data, sourced from Vinted's own server-rendered catalog navigation.\n- **Params:** _none_\n\n### `vinted_category`\n\n- **HTTP:** `GET /vinted/category`\n- **What:** Vinted listings for a category. Returns Vinted listings for a specific category, with optional price filtering and sort order. `order` values: `relevance`, `newest_first`, `price_high_to_low`, `price_low_to_high`. Public data, sourced from Vinted's own server-rendered category page.\n- **Params:** `id` (string, **required**) — Numeric Vinted category ID, from a /vinted/item result's categories breadcrumb link; `order` (string, optional) — Sort order. Allowed values: relevance, newest_first, price_high_to_low, price_low_to_high; `page` (integer, optional) — Page number, starting at 1; `price_from` (number, optional) — Minimum price; `price_to` (number, optional) — Maximum price\n\n### `vinted_item`\n\n- **HTTP:** `GET /vinted/item`\n- **What:** A single Vinted listing's detail. Returns a single Vinted listing's detail: title, description, brand, size, condition, material, color, price, category breadcrumb, and photos. Public data, sourced from Vinted's own server-rendered item page.\n- **Params:** `id` (string, **required**) — Numeric Vinted item ID, from a /vinted/catalog result's id field\n\n### `vinted_member`\n\n- **HTTP:** `GET /vinted/member`\n- **What:** A Vinted seller's public storefront profile. Returns a Vinted seller's public storefront profile: username, self-disclosed coarse location, rating, and follower/following counts. Deliberately excludes online-presence and activity data (last-seen timestamps, upload-frequency badges) present on the live page. Public data, sourced from Vinted's own server-rendered member page.\n- **Params:** `id` (string, **required**) — Numeric Vinted member ID, from a /vinted/item result's seller link\n\n## StockX (5)\n\n### `stockx_brands`\n\n- **HTTP:** `GET /stockx/brands`\n- **What:** Get StockX brand catalog. Returns StockX's full brand catalog (name and URL slug for every brand in its own brand directory), suitable for building GET /stockx/search's brand parameter or GET /stockx/search's model parameter's required single-brand context. Credential-free public data from the same navigation API backing StockX's own site menu.\n- **Params:** _none_\n\n### `stockx_categories`\n\n- **HTTP:** `GET /stockx/categories`\n- **What:** Get StockX category/subcategory taxonomy. Returns StockX's full category/subcategory reference: the 7 top-level categories accepted by GET /stockx/search's category parameter, each with its subcategories (e.g. Shoes -> Boots, Cleats, Clogs). Credential-free public data from the same navigation API backing StockX's own site menu.\n- **Params:** _none_\n\n### `stockx_product`\n\n- **HTTP:** `GET /stockx/product/{slug}`\n- **What:** Get StockX product detail. Returns a normalized StockX product: identity (title, brand, model, colorway, style id, retail price, release date, description, image), current market data (lowest ask, highest bid, last sale, trailing average price/sales count, delivery-speed ask tiers), individual seller listings (price, condition, size), related-product recommendations (other colorways/siblings StockX surfaces on the product page), and any promotional badges. Credential-free public data from StockX's own product-page GraphQL API.\n- **Params:** `slug` (string, **required**) — StockX product URL slug (the urlKey), the path segment of a https://stockx.com/{slug} product page\n\n### `stockx_releases`\n\n- **HTTP:** `GET /stockx/releases`\n- **What:** Get StockX upcoming release calendar. Returns a date-ordered page (release date ascending) of StockX's upcoming release calendar: new and restocked products releasing on or after the given date, with normalized product summaries, headline pricing, and each item's published release date. Credential-free public data from the same GraphQL API backing StockX's own releases page.\n- **Params:** `from` (string, optional) — Only include releases on or after this date (YYYY-MM-DD, UTC). Defaults to today; `limit` (integer, optional) — Results per page, defaults to 20, maximum 100; `page` (integer, optional) — 1-indexed result page, defaults to 1\n\n### `stockx_search`\n\n- **HTTP:** `GET /stockx/search`\n- **What:** Search/browse StockX products. Browses StockX's product catalog by category with optional free-text keyword search and facet filters (gender, brand, color, shoe height, activity, availability), returning normalized product summaries with headline pricing plus the total matching count. Credential-free public data from the same GraphQL API backing StockX's own category browse pages.\n- **Params:** `activity` (string, optional) — Filter by activity, comma-separated for multiple values; `available_now` (boolean, optional) — Only include products with at least one active ask; `below_retail` (boolean, optional) — Only include products currently trading below original retail price; `brand` (string, optional) — Filter by one or more brand slugs, comma-separated, e.g. jordan,nike; `category` (string, **required**) — StockX top-level category; `color` (string, optional) — Filter by color, comma-separated for multiple values; `gender` (string, optional) — Filter by gender, comma-separated for multiple values; `limit` (integer, optional) — Results per page, defaults to 20, maximum 100; `model` (string, optional) — Filter by a single model slug, e.g. air-force-1. Requires exactly one value in brand; `page` (integer, optional) — 1-indexed result page, defaults to 1; `query` (string, optional) — Free-text keyword search within the category, e.g. a model name or colorway; `shoe_height` (string, optional) — Filter by shoe height, comma-separated for multiple values; `sort` (string, optional) — Result sort order, defaults to featured; `xpress_ship` (boolean, optional) — Only include products with StockX Xpress Ship availability\n\n## Mercari (5)\n\n### `mercari_autocomplete`\n\n- **HTTP:** `GET /mercari/autocomplete`\n- **What:** Mercari search autocomplete. Returns Mercari's own search-suggestion list for a partial keyword, in the upstream's own relevance order. An empty suggestion list is a normal outcome for obscure or gibberish input. Credential-free public data sourced from Mercari's own mobile-app API using an anonymous, login-free session.\n- **Params:** `query` (string, **required**) — Partial keyword to get suggestions for\n\n### `mercari_home`\n\n- **HTTP:** `GET /mercari/home`\n- **What:** Get Mercari home feed. Returns Mercari's own curated home-feed recommendations: normalized listing summaries (title, price, thumbnail, condition, seller). Credential-free public data sourced from Mercari's own mobile-app API using an anonymous, login-free session.\n- **Params:** _none_\n\n### `mercari_item`\n\n- **HTTP:** `GET /mercari/item/{id}`\n- **What:** Get Mercari item detail. Returns a normalized Mercari item-detail page: description, all photos, price, condition, category, hashtags, the shipping origin state, and a \"similar items\" carousel of related listings. Credential-free public data sourced from Mercari's own mobile-app API using an anonymous, login-free session.\n- **Params:** `id` (string, **required**) — Mercari item id, e.g. from a search result's id field\n\n### `mercari_master`\n\n- **HTTP:** `GET /mercari/master`\n- **What:** Get Mercari full taxonomy (categories, brands, sizes). Returns Mercari's full reference taxonomy in one call: every category (with parent linkage), every recognized brand, and every clothing/shoe/apparel size. Large (tens of thousands of brand entries) and effectively static -- cache this response rather than polling it. Credential-free public data sourced from Mercari's own mobile-app API using an anonymous, login-free session.\n- **Params:** _none_\n\n### `mercari_search`\n\n- **HTTP:** `GET /mercari/search`\n- **What:** Search Mercari listings. Searches Mercari's live resale marketplace by free-text keyword, returning normalized listing summaries (title, price, thumbnail, condition, seller) plus the total matching count. Credential-free public data sourced from Mercari's own mobile-app API using an anonymous, login-free session.\n- **Params:** `query` (string, **required**) — Free-text keyword search\n\n## Depop (10)\n\n### `depop_brands`\n\n- **HTTP:** `GET /depop/brands`\n- **What:** Depop's full brand directory. Returns Depop's full brand directory (id, name, slug), not just brands with active listings for a given search -- resolves the search endpoint's otherwise-opaque brand_ids filter to human-readable names. Public data sourced from Depop's own brand-directory API.\n- **Params:** _none_\n\n### `depop_categories`\n\n- **HTTP:** `GET /depop/categories`\n- **What:** Get Depop's category taxonomy. Returns Depop's full department, category, and subcategory taxonomy -- every value usable with /depop/search's and /depop/shop/{username}'s category/subcategory filters. Tries a live refresh from Depop's own category-filter API first and falls back to a static snapshot on any failure, so this never errors.\n- **Params:** _none_\n\n### `depop_item`\n\n- **HTTP:** `GET /depop/item/{slug}`\n- **What:** Get Depop item detail. Returns a normalized Depop item-detail page: description, all photos, price, condition, brand, size, seller info, and a \"similar items\" carousel when the page has one. Public data sourced from Depop's own item pages.\n- **Params:** `slug` (string, **required**) — Depop item URL slug, e.g. from a search result's id field\n\n### `depop_item_similar`\n\n- **HTTP:** `GET /depop/item/{slug}/similar`\n- **What:** Get Depop items similar to a listing. Returns items similar to a given Depop listing, via Depop's dedicated similar-items API -- richer and paginated (up to 150 per page) compared to the small, non-paginated \"similar items\" carousel already included in item detail. Public data sourced from Depop's own similar-items API.\n- **Params:** `after` (string, optional) — Opaque pagination cursor from a previous response's next_cursor field. Omit for the first page.; `limit` (integer, optional) — Max results per page, 1-150; `slug` (string, **required**) — Depop item URL slug, e.g. from a search result's id field\n\n### `depop_search`\n\n- **HTTP:** `GET /depop/search`\n- **What:** Search Depop listings. Searches Depop's resale-fashion marketplace by free-text keyword, with optional price, condition, colour, category, subcategory, gender, kids-department, brand, discount, and sort filters, returning normalized listing summaries (title, price, brand, condition, like count, photos, sizes), a pagination cursor, and the total matching count. Public data sourced from Depop's own search API.\n- **Params:** `after` (string, optional) — Opaque pagination cursor from a previous response's next_cursor field. Omit for the first page.; `brand_ids` (string, optional) — Comma-separated Depop internal numeric brand ids. Not documented by Depop -- find a brand's id by browsing its depop.com/brands/<slug>/ page.; `category` (string, optional) — Depop category slug: tops, bottoms, dresses, coats-jackets, jumpsuit-and-playsuit, suits, footwear, accessories, nightwear, underwear, swim-beach-wear, fancy-dress, sleepsuits-and-bodysuits, bundles, beauty, face-masks, home, tech-accessories, film, art, books-and-magazine, music, party-supplies, sports-equipment-accesories, toys, umbrella. See GET /depop/categories for a machine-readable enumeration with names and subcategories.; `colours` (string, optional) — Comma-separated colour filter: black, grey, white, brown, tan, cream, yellow, red, burgundy, orange, pink, purple, blue, navy, green, khaki, multi; `condition` (string, optional) — Comma-separated condition filter: brand_new, used_like_new, used_excellent, used_good, used_fair; `gender` (string, optional) — Department filter: female, male; `is_kids` (boolean, optional) — Kids-department filter: true restricts results to kids items only, false excludes them, omitted returns both.; `on_sale` (boolean, optional) — Restrict results to discounted listings; `price_max` (number, optional) — Maximum listing price in USD; `price_min` (number, optional) — Minimum listing price in USD; `query` (string, **required**) — Free-text keyword search; `sizes` (string, optional) — Comma-separated Depop size composite ids (format {size_set_id}.{id}, e.g. \\; `sort` (string, optional) — Sort order: relevance, price_low_to_high, price_high_to_low; `subcategory` (string, optional) — Comma-separated Depop subcategory slug(s), scoped within category. See GET /depop/categories for the full list per category.\n\n### `depop_search_facets`\n\n- **HTTP:** `GET /depop/search/facets`\n- **What:** Depop search result-count breakdowns. Returns result-count breakdowns per department/category/subcategory for a search query, via Depop's dedicated aggregates API -- a distinct upstream call from search itself, not embedded in its response. Public data sourced from Depop's own search-aggregates API.\n- **Params:** `query` (string, **required**) — Free-text keyword search\n\n### `depop_search_sellers`\n\n- **HTTP:** `GET /depop/search-sellers`\n- **What:** Search Depop sellers by name. Finds Depop users/sellers by name or username. A matched result's username can be passed directly to GET /depop/shop/{username} for that seller's full shop. Public data sourced from Depop's own user-search API.\n- **Params:** `query` (string, **required**) — Seller name or username to search for\n\n### `depop_shop`\n\n- **HTTP:** `GET /depop/shop/{username}`\n- **What:** Get a Depop seller's shop. Returns a Depop seller's public shop: profile (rating, sold count, followers, bio) plus current listings, with optional price, condition, colour, category, subcategory, gender, discount, and sort filters. Public data sourced from Depop's own shop pages.\n- **Params:** `category` (string, optional) — Depop category slug: tops, bottoms, dresses, coats-jackets, jumpsuit-and-playsuit, suits, footwear, accessories, nightwear, underwear, swim-beach-wear, fancy-dress, sleepsuits-and-bodysuits, bundles, beauty, face-masks, home, tech-accessories, film, art, books-and-magazine, music, party-supplies, sports-equipment-accesories, toys, umbrella. See GET /depop/categories for a machine-readable enumeration with names and subcategories.; `colours` (string, optional) — Comma-separated colour filter: black, grey, white, brown, tan, cream, yellow, red, burgundy, orange, pink, purple, blue, navy, green, khaki, multi; `condition` (string, optional) — Comma-separated condition filter: brand_new, used_like_new, used_excellent, used_good, used_fair; `gender` (string, optional) — Department filter: female, male; `on_sale` (boolean, optional) — Restrict results to discounted listings; `price_max` (number, optional) — Maximum listing price in USD; `price_min` (number, optional) — Minimum listing price in USD; `sizes` (string, optional) — Comma-separated Depop size composite ids (format {size_set_id}.{id}, e.g. \\; `sort` (string, optional) — Sort order: relevance, price_low_to_high, price_high_to_low, recently_listed; `subcategory` (string, optional) — Comma-separated Depop subcategory slug(s), scoped within category. See GET /depop/categories for the full list per category.; `username` (string, **required**) — Depop seller username, e.g. from a shop page URL segment\n\n### `depop_sizes`\n\n- **HTTP:** `GET /depop/sizes`\n- **What:** Get Depop's size taxonomy. Returns Depop's full, multi-region size taxonomy -- every composite id usable with /depop/search's and /depop/shop/{username}'s sizes filter. Public data sourced from Depop's own size-filter API.\n- **Params:** _none_\n\n### `depop_suggest`\n\n- **HTTP:** `GET /depop/suggest`\n- **What:** Depop search-box autocomplete. Returns Depop's own search-box autocomplete suggestions for a partial query, including the category a suggestion maps to when relevant. Public data sourced from Depop's own search-suggestions API.\n- **Params:** `query` (string, **required**) — Partial search query to autocomplete\n\n## Whatnot (3)\n\n### `whatnot_browse`\n\n- **HTTP:** `GET /whatnot/browse`\n- **What:** Browse Whatnot live shows by category. Returns the live and upcoming shows currently listed under a Whatnot category: seller, title, status, start time, thumbnail, and tags. Public data sourced from Whatnot's own GraphQL API.\n- **Params:** `category` (string, **required**) — Whatnot category slug. See GET /whatnot/categories for the full list.\n\n### `whatnot_categories`\n\n- **HTTP:** `GET /whatnot/categories`\n- **What:** Get Whatnot's category list. Returns Whatnot's full top-level category list (e.g. \"Trading Card Games\", \"Sneakers & Streetwear\"). Each entry's slug is usable directly with /whatnot/browse's category filter. Public data sourced from Whatnot's own GraphQL API.\n- **Params:** _none_\n\n### `whatnot_live`\n\n- **HTTP:** `GET /whatnot/live/{id}`\n- **What:** Get a Whatnot live show's current shop feed. Returns a Whatnot live show's current shop feed: every product, auction, and giveaway listing currently visible in the show, each with its seller's rating. Public data sourced from Whatnot's own GraphQL API.\n- **Params:** `id` (string, **required**) — Whatnot live show id, e.g. from a browse result's id field\n\n## GOAT (10)\n\n### `goat_collection`\n\n- **HTTP:** `GET /goat/collection`\n- **What:** Get a GOAT curated product collection. Returns a page of one of GOAT's curated product collections (an editorial rail like \"top trending\" or \"new arrivals\"), the same call GOAT's own product-page \"you may also like\" rails and homepage modules use. Collection slugs are not enumerable by this API -- capture one from a live GOAT page. Credential-free public data.\n- **Params:** `exclude_product_ids` (string, optional) — Omit specific products by id, comma-separated; `limit` (integer, optional) — Results per page, defaults to 12, maximum 100; `page` (integer, optional) — 1-indexed result page, defaults to 1; `slug` (string, **required**) — GOAT collection slug, e.g. as seen in a curated rail on GOAT's own site\n\n### `goat_countries`\n\n- **HTTP:** `GET /goat/countries`\n- **What:** Get GOAT countries. Returns every country GOAT recognizes -- the accepted values for GET /goat/product/{slug}'s country_code parameter -- with the currency and size unit (us, uk, eu) GOAT localizes to for each, plus whether GOAT ships and accepts returns there. Every country is listed, not only the shippable ones, because country_code localizes pricing and is accepted for all of them; filter on ships_to if you want only GOAT's shipping destinations. Credential-free public data.\n- **Params:** _none_\n\n### `goat_curated`\n\n- **HTTP:** `GET /goat/curated`\n- **What:** Get GOAT curated links. Returns the shelf of editorially curated links GOAT is currently promoting in its own search box: seasonal collections, specific product searches, and browse-all entry points. Every link is actionable against this API -- a collection link carries a value for GET /goat/collection, a search link carries a query for GET /goat/search. Credential-free public data.\n- **Params:** _none_\n\n### `goat_listings_count`\n\n- **HTTP:** `GET /goat/listings/count`\n- **What:** Get GOAT live listing count. Returns how many listings GOAT currently has live across its whole marketplace. This is the only way to see GOAT's true catalog size, because GET /goat/search's total_results saturates at 10000 on a broad query and cannot report a total above that ceiling. Credential-free public data.\n- **Params:** _none_\n\n### `goat_product`\n\n- **HTTP:** `GET /goat/product/{slug}`\n- **What:** Get GOAT product detail. Returns a normalized GOAT product: identity/descriptive metadata (name, brand, SKU, colorway, designer, silhouette, taxonomy, materials, release date, retail price, editorial story, images, full size range, other products featured alongside it), plus live per-size/condition pricing and stock status (lowest price, GOAT Instant Ship price, last sold price, highest current buyer offer). Credential-free public data combining GOAT's own product-page payload with its live pricing and offers APIs.\n- **Params:** `country_code` (string, optional) — ISO 3166-1 alpha-2 country code used to localize per-size pricing, defaults to US; `slug` (string, **required**) — GOAT product URL slug, the path segment of a https://www.goat.com/sneakers/{slug} product page\n\n### `goat_product_recommended`\n\n- **HTTP:** `GET /goat/product/{slug}/recommended`\n- **What:** Get GOAT recommended products for a product. Returns the recommended/related products GOAT's own product page shows for a given product (other colorways, similar products) -- descriptive metadata only, no live pricing. Credential-free public data from GOAT's own product-page recommendation API.\n- **Params:** `count` (integer, optional) — Number of recommended products to return, defaults to 8, maximum 24; `slug` (string, **required**) — GOAT product URL slug to find related products for\n\n### `goat_search`\n\n- **HTTP:** `GET /goat/search`\n- **What:** Search GOAT products. Searches or browses GOAT's sneaker/streetwear/collectibles catalog by free-text query and/or facet filters (category, footwear sub-type, activity, color, gender, condition, brand, release year, price range, release-date range, silhouette, designer, in-stock/under-retail/instant-ship, curated collection), returning normalized product summaries (brand, silhouette, category, image, stock status, headline pricing across all sizes) plus the total matching count. Query is optional -- a facet filter alone browses the catalog the same way GOAT's own category/brand pages do. Credential-free public data from the same JSON API backing GOAT's own search page.\n- **Params:** `activities` (string, optional) — Filter by activity (sneakers only), comma-separated for multiple values; `brands` (string, optional) — Filter by one or more brand slugs, comma-separated, e.g. air-jordan,nike. GET /goat/search/facets lists GOAT's top brands; long-tail brands are valid here even when absent from that list; `categories` (string, optional) — Filter by category, comma-separated for multiple values. See GET /goat/search/facets for the current live list; `collection_slug` (string, optional) — Scope results to a GOAT curated collection (see GET /goat/collection), combinable with query, every other filter, and sort; `colors` (string, optional) — Filter by color, comma-separated for multiple values; `conditions` (string, optional) — Filter by item condition, comma-separated for multiple values; `designers` (string, optional) — Filter by one or more designers, comma-separated, matching GOAT's own naming (see a product's designer field); `genders` (string, optional) — Filter by gender, comma-separated for multiple values; `in_stock` (boolean, optional) — Only include products currently in stock; `instant_ship` (boolean, optional) — Only include products with GOAT Instant Ship availability; `limit` (integer, optional) — Results per page, defaults to 12, maximum 100; `page` (integer, optional) — 1-indexed result page, defaults to 1; `price_cents_max` (integer, optional) — Only include results priced at or below this amount, in cents; `price_cents_min` (integer, optional) — Only include results priced at or above this amount, in cents; `product_types` (string, optional) — Filter by footwear sub-type, comma-separated for multiple values; `query` (string, optional) — Free-text search query, e.g. a model name, colorway, or style code. Optional -- omit to browse by facet filters alone; `released_after` (string, optional) — Only include products released on or after this date (YYYY-MM-DD, UTC); `released_before` (string, optional) — Only include products released on or before this date (YYYY-MM-DD, UTC); `silhouettes` (string, optional) — Filter by one or more silhouettes, comma-separated, matching GOAT's own naming (see a product's silhouette field); `sort` (string, optional) — Result sort order, defaults to relevance; `under_retail` (boolean, optional) — Only include products currently trading below original retail price; `years` (string, optional) — Filter by season year(s), comma-separated, e.g. 2025,2026. See GET /goat/search/facets for the current live list\n\n### `goat_search_facets`\n\n- **HTTP:** `GET /goat/search/facets`\n- **What:** Get GOAT search facet values. Returns the accepted values for goat_search's filter parameters: categories, colors, genders, conditions, brands, and years are read live from GOAT's own search API so a value GOAT adds is discoverable without any client-side change, while product_types and activities are served from a maintained list because GOAT exposes no live facet for them. brands is GOAT's top brands ordered by product count, not the complete brand list -- when brands_truncated is true, brands beyond the ones listed exist and remain valid goat_search values. Credential-free public data.\n- **Params:** _none_\n\n### `goat_suggest`\n\n- **HTTP:** `GET /goat/suggest`\n- **What:** Autocomplete a GOAT search. Returns GOAT's own search-box autocomplete for a partial query: matching curated collections and matching products. The collections carry the slug values accepted by GET /goat/collection and by GET /goat/search's collection_slug parameter, making this the way to discover collection slugs. Credential-free public data.\n- **Params:** `limit` (integer, optional) — Maximum curated collections to return. Defaults to 8, maximum 20. Does not affect the product count, which upstream fixes at 25; `query` (string, **required**) — Partial search text to autocomplete\n\n### `goat_trending_searches`\n\n- **HTTP:** `GET /goat/searches/trending`\n- **What:** Get GOAT trending searches. Returns the search terms GOAT is currently surfacing as popular, in GOAT's own ranking order -- the same list its own search box shows. Each term is free text ready to pass to GET /goat/search's query parameter. Credential-free public data.\n- **Params:** _none_\n\n## Leboncoin (2)\n\n### `leboncoin_listing`\n\n- **HTTP:** `GET /leboncoin/listing`\n- **What:** Get a Leboncoin public listing. Returns normalized public metadata for one supplied Leboncoin ad URL. It excludes seller identity and contacts, precise location, payment, delivery, and account data.\n- **Params:** `url` (string, **required**) — Canonical public ad URL returned by leboncoin-search\n\n### `leboncoin_search`\n\n- **HTTP:** `GET /leboncoin/search`\n- **What:** Search Leboncoin public listings. Returns normalized public listing cards from one Leboncoin location page. This endpoint excludes contacts, seller profiles, accounts, and transaction data.\n- **Params:** `location` (string, **required**) — Public Leboncoin location slug\n\nFile v1.0.18:skill-card.md\n\n## Description:\n\nResearches secondhand, resale, and handmade marketplaces via the Crawlora API — Poshmark, Etsy, Vinted, StockX, Mercari, Depop, Whatnot, GOAT, and Leboncoin — returning clean JSON.\n\nThis skill is ready for commercial/non-commercial use.\n\n## Publisher:\n\n[crawlora-org](https://clawhub.ai/user/crawlora-org)\n\n### License/Terms of Use:\n\nMIT-0\n\n## Use Case:\n\nExternal users and developers use this skill to research public resale, secondhand, streetwear, and handmade marketplace listings, seller storefronts, and price signals across supported platforms.\n\n### Deployment Geography for Use:\n\nGlobal\n\n## Known Risks and Mitigations:\n\nRisk: Marketplace search terms, listing IDs, seller names, and supplied public listing URLs are sent to Crawlora with the user's Crawlora API key.\n\nMitigation: Keep requests user-directed, use the environment variable for the API key, and avoid private account pages or sensitive personal data.\n\nRisk: Unsupported or unrelated Crawlora routes could expose data outside the intended marketplace research scope.\n\nMitigation: Use the bundled helper's documented GET-only route catalog and reject paths outside the supported marketplace endpoints.\n\n## Reference(s):\n\n- [Endpoint Reference](reference/endpoints.md)\n- [Crawlora](https://crawlora.net)\n- [ClawHub Skill Page](https://clawhub.ai/crawlora-org/skills/resale-secondhand-research)\n\n## Skill Output:\n\n**Output Type(s):** [Text, JSON, Shell commands, Configuration, Guidance]\n\n**Output Format:** [Markdown guidance with inline shell commands and JSON API responses]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [Requires CRAWLORA_API_KEY and uses documented GET routes for supported marketplaces.]\n\n## Skill Version(s):\n\n1.0.18 (source: release evidence)\n\n## Ethical Considerations:\n\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment.\n\nArchive v1.0.17: 5 files, 15583 bytes\n\nFiles: reference/endpoints.md (37542b), scripts/crawlora.sh (6388b), skill-card.md (2402b), SKILL.md (5684b), _meta.json (146b)\n\nFile v1.0.17:SKILL.md\n\n---\nname: resale-secondhand-research\ndescription: Researches secondhand, resale, and handmade marketplaces via the Crawlora API — Poshmark, Etsy, Vinted, StockX, Mercari, Depop, Whatnot, GOAT, and Leboncoin — returning clean JSON. Use when the user wants to find or compare listings, check a seller/shop, look up sneaker/streetwear resale prices, or research handmade/vintage goods.\n---\n\n# Resale & secondhand marketplace research\n\nSearch listings, sellers, and prices across nine C2C resale, streetwear,\nand handmade marketplaces as normalized JSON from the Crawlora API — no\nscraping app storefronts.\n\n## When to use this skill\n\n- \"Find <item> for sale on <platform>\" / compare listings.\n- \"What's this seller's/shop's closet/storefront like?\"\n- \"What's the resale price for these sneakers?\" (StockX)\n- \"Find handmade/vintage <item>\" (Etsy).\n- \"What's live right now?\" (Whatnot livestream shopping).\n\n## Setup (one-time)\n\n- Get a free Crawlora API key (2,000 credits/mo, no card) at [https://crawlora.net](https://crawlora.net?utm_source=github&utm_medium=referral&utm_campaign=crawlora-skills).\n- Set `CRAWLORA_API_KEY` in the environment before running the helper.\n- The helper reads `CRAWLORA_API_KEY` from the environment and sends requests to `https://api.crawlora.net/api/v1`. Missing/invalid key → `401`.\n\n## How it works\n\n1. **Poshmark** — `/poshmark/search` (`query`) to find listings;\n   `/poshmark/listing/{id}` for detail; `/poshmark/closet/{username}` for a\n   seller's storefront; `/poshmark/brand/{name}` / `/poshmark/category/{path}`\n   to browse.\n2. **Etsy** — `/etsy/search` (`q`) for listings; `/etsy/listing/{id}` (+\n   `/reviews`) for detail; `/etsy/shop/search` / `/etsy/shop/{id}` (+\n   `/listings`, `/reviews`) for a shop's storefront.\n3. **Vinted** — `/vinted/catalog` (`search_text`) for listings;\n   `/vinted/item/{id}` for detail; `/vinted/member/{id}` for a seller;\n   `/vinted/brand`/`/vinted/category` to filter by brand/category id\n   (resolve ids via `/vinted/brands`/`/vinted/categories`).\n4. **StockX** — `/stockx/search` **requires `category`** (e.g. `sneakers`,\n   `apparel`, `collectibles`; `query` is the optional keyword within it) to\n   find a `slug`, then `/stockx/product/{slug}` for market data;\n   `/stockx/releases` for upcoming drops.\n5. **Mercari** — `/mercari/search` (`query`) for listings;\n   `/mercari/item/{id}` for detail; `/mercari/autocomplete` for query suggestions.\n6. **Depop** — `/depop/search` (`query`, plus filters like `brand_ids`,\n   `condition`, `price_min`/`price_max`) for listings; `/depop/item/{slug}`\n   for detail; `/depop/shop/{username}` for a seller's storefront.\n7. **Whatnot** — `/whatnot/browse` **requires `category`** to list live/\n   upcoming shows; `/whatnot/live/{id}` for one livestream's detail.\n8. **GOAT** — `/goat/search` for sneaker, streetwear, and collectible products;\n   `/goat/product/{slug}` for pricing and product detail; `/goat/collection`,\n   `/goat/curated`, `/goat/suggest`, and `/goat/searches/trending` for catalog\n   discovery.\n9. **Leboncoin** — `/leboncoin/search` for public listing cards and\n   `/leboncoin/listing` for one public ad's detail.\n\nFull endpoint list, methods, and params: [`reference/endpoints.md`](reference/endpoints.md).\n\n## Calling the API\n\n```sh\n# Search a marketplace:\nscripts/crawlora.sh /poshmark/search query=\"vintage levis jacket\" | jq '.'\nscripts/crawlora.sh /etsy/search q=\"handmade ceramic mug\" | jq '.'\nscripts/crawlora.sh /vinted/catalog search_text=\"north face jacket\" | jq '.'\n\n# StockX (category required):\nscripts/crawlora.sh /stockx/search category=sneakers query=\"jordan 4\" | jq '.'\n\n# Seller/shop lookup:\nscripts/crawlora.sh /depop/shop/<handle> | jq '.'\n```\n\nUse `scripts/crawlora.sh` for all requests; it keeps the API key out of command-line arguments.\n\n\n## Endpoint reference\n\nSee [`reference/endpoints.md`](reference/endpoints.md) for every Poshmark,\nEtsy, Vinted, StockX, Mercari, Depop, Whatnot, GOAT, and Leboncoin endpoint\nthis skill uses.\n\n## Examples\n\n- **Cross-platform price compare:** search the same item on Poshmark,\n  Depop, Vinted, and Mercari, then diff asking prices.\n- **Sneaker resale check:** `/stockx/search category=sneakers query=\"...\"` →\n  `/stockx/product/{slug}` for current market price vs. retail.\n- **Seller vetting:** `/poshmark/closet/{username}` or `/depop/shop/{username}`\n  before buying, to check listing count and activity.\n- **Handmade sourcing:** `/etsy/search` for a category, then\n  `/etsy/shop/{id}/reviews` on top shops before ordering a custom piece.\n- **Sneaker/streetwear resale:** `/goat/search` to find products, then\n  `/goat/product/{slug}` for current per-size pricing and stock.\n- **French secondhand listings:** `/leboncoin/search` for a public location,\n  then `/leboncoin/listing` for a selected ad.\n\n## Notes & limits\n\n- **Credits / pay-on-success:** billed only on `2xx`; free tier 2,000 credits/mo.\n  Key at [https://crawlora.net](https://crawlora.net?utm_source=github&utm_medium=referral&utm_campaign=crawlora-skills).\n- **Public data only** — public listing/storefront pages; no purchases or\n  offers are made.\n- **Security:** key lives in `CRAWLORA_API_KEY` only — never hardcode, query-param, or commit it.\n- **StockX and Whatnot require a `category`** on their search/browse\n  endpoints — check `reference/endpoints.md` for accepted values before calling.\n- Vinted brand/category filters need numeric ids — resolve via\n  `/vinted/brands`/`/vinted/categories` first if you only have a name.\n- GOAT and Leboncoin calls can also consume Crawlora credits; keep the\n  marketplace and route in the user's requested scope before calling them.\n\nFile v1.0.17:_meta.json\n\n{\n  \"ownerId\": \"kn70shhkf6qpfwgfrbgtep2wkd8c6b4t\",\n  \"slug\": \"resale-secondhand-research\",\n  \"version\": \"1.0.17\",\n  \"publishedAt\": 1789357155270\n}\n\nFile v1.0.17:reference/endpoints.md\n\n# resale-secondhand-research — endpoint reference\n\n> Generated from `scripts/tools.json` by `scripts/generate.mjs` — do not edit by hand.\n\nEndpoints this skill uses, grouped by platform. Call them via `scripts/crawlora.sh` (see SKILL.md).\n\nAll paths are relative to the API base `https://api.crawlora.net/api/v1` and require the header `x-api-key: $CRAWLORA_API_KEY`. Path params like `{id}` are substituted into the URL; `GET` params go in the query string; `POST` params go in a JSON body.\n\n**57 endpoints across 9 platform group(s).**\n\n## Poshmark (8)\n\n### `poshmark_brand`\n\n- **HTTP:** `GET /poshmark/brand/{name}`\n- **What:** Browse Poshmark listings by brand. Returns a page of normalized Poshmark listings for a given brand name (e.g. Nike), the same browsing view as Poshmark's own brand pages. Pass a previous response's next_max_id back as max_id to fetch the next page. Credential-free public data sourced from Poshmark's own server-rendered brand page and, for pages past the first, Poshmark's own JSON pagination API.\n- **Params:** `max_id` (string, optional) — Opaque pagination cursor from a previous response's next_max_id. Omit for the first page; `name` (string, **required**) — Poshmark brand name, matching the path segment of a /brand/{name} URL\n\n### `poshmark_brands`\n\n- **HTTP:** `GET /poshmark/brands`\n- **What:** Get the full Poshmark brand directory. Returns Poshmark's full brand directory: every brand Poshmark recognizes (name, slug, logo, known aliases), not just brands with active listings for a given search or category filter. Useful for resolving a brand name to the exact value the brand/search filters expect. Credential-free public data sourced from Poshmark's own server-rendered brand directory page.\n- **Params:** _none_\n\n### `poshmark_categories`\n\n- **HTTP:** `GET /poshmark/categories`\n- **What:** Get the Poshmark department/category browse taxonomy. Returns Poshmark's full department/category browse taxonomy (e.g. Women > Shoes, Men > Jackets & Coats). Each entry's path resolves directly against the category endpoint. This is reference data that changes rarely, so responses are cached. Credential-free public data sourced from Poshmark's own server-rendered category pages.\n- **Params:** _none_\n\n### `poshmark_category`\n\n- **HTTP:** `GET /poshmark/category/{path}`\n- **What:** Browse Poshmark listings by category. Returns a page of normalized Poshmark listings for a given category path (e.g. Women-Shoes, Men-Shirts), the same browsing view as Poshmark's own category pages. Pass a previous response's next_max_id back as max_id to fetch the next page. Credential-free public data sourced from Poshmark's own server-rendered category page and, for pages past the first, Poshmark's own JSON pagination API.\n- **Params:** `max_id` (string, optional) — Opaque pagination cursor from a previous response's next_max_id. Omit for the first page; `path` (string, **required**) — Poshmark category path segment, e.g. Women-Shoes, Men-Shirts\n\n### `poshmark_closet`\n\n- **HTTP:** `GET /poshmark/closet/{username}`\n- **What:** Get Poshmark seller closet (storefront). Returns a normalized Poshmark closet (seller storefront) page: the seller's public profile and reputation stats (followers, ratings, items sold) plus a first page of their currently available listings and total listing count. Pass a previous response's next_max_id back as max_id to fetch the next page of listings; paginated responses omit the seller profile to avoid a second upstream fetch, so fetch without max_id first to get seller fields. Credential-free public data sourced from Poshmark's own server-rendered closet page and, for pages past the first, Poshmark's own JSON pagination API.\n- **Params:** `max_id` (string, optional) — Opaque pagination cursor from a previous response's next_max_id. Omit for the first page; `username` (string, **required**) — Poshmark seller username, the path segment of a /closet/{username} URL\n\n### `poshmark_listing`\n\n- **HTTP:** `GET /poshmark/listing/{id}`\n- **What:** Get Poshmark listing detail. Returns a normalized Poshmark item-detail page: the full listing (description, all photos, size/brand/condition, inventory), its seller's profile, public comments, and similar listings Poshmark itself surfaces on the same page. Credential-free public data sourced from Poshmark's own server-rendered listing page.\n- **Params:** `id` (string, **required**) — Poshmark listing id, the trailing id segment of a /listing/{slug}-{id} URL\n\n### `poshmark_search`\n\n- **HTTP:** `GET /poshmark/search`\n- **What:** Search Poshmark listings. Searches Poshmark for clothing, shoes, and accessory listings, returning normalized listing summaries (title, price, brand, size, condition, seller, images) plus the total matching count and an opaque pagination cursor. Pass a previous response's next_max_id back as max_id to fetch the next page. Credential-free public data sourced from Poshmark's own server-rendered search page and, for pages past the first, Poshmark's own JSON pagination API.\n- **Params:** `department` (string, optional) — Department filter, e.g. Women, Men, Kids; `max_id` (string, optional) — Opaque pagination cursor from a previous response's next_max_id. Omit for the first page; `query` (string, **required**) — Free-text keyword search\n\n### `poshmark_trend`\n\n- **HTTP:** `GET /poshmark/trend/{id}`\n- **What:** Browse a Poshmark trend/showroom collection. Returns a page of normalized Poshmark listings for a curated trend/showroom collection (e.g. \"Vintage Celine Handbags\"), the same browsing view as Poshmark's own trend pages. Pass a previous response's next_max_id back as max_id to fetch the next page. Credential-free public data sourced from Poshmark's own server-rendered trend page and, for pages past the first, Poshmark's own JSON pagination API.\n- **Params:** `id` (string, **required**) — Poshmark trend/showroom id, the trailing id segment of a /trend/{slug}-{id} URL; `max_id` (string, optional) — Opaque pagination cursor from a previous response's next_max_id. Omit for the first page\n\n## Etsy (7)\n\n### `etsy_listing`\n\n- **HTTP:** `GET /etsy/listing/{id}`\n- **What:** Get Etsy listing detail. Returns Etsy listing detail: title, price, images, materials, tags, and shop.\n- **Params:** `id` (string, **required**) — Numeric Etsy listing id\n\n### `etsy_listing_reviews`\n\n- **HTTP:** `GET /etsy/listing/{id}/reviews`\n- **What:** Get Etsy listing reviews. Returns buyer reviews for an Etsy listing.\n- **Params:** `id` (string, **required**) — Numeric Etsy listing id; `offset` (integer, optional) — 0-based review offset; `sort` (string, optional) — Review sort order\n\n### `etsy_search`\n\n- **HTTP:** `GET /etsy/search`\n- **What:** Search Etsy listings. Returns Etsy product search results across shops for a keyword query.\n- **Params:** `limit` (integer, optional) — Page size (default 36, max 100); `offset` (integer, optional) — 0-based result offset; `q` (string, **required**) — Search keywords\n\n### `etsy_shop`\n\n- **HTTP:** `GET /etsy/shop/{id}`\n- **What:** Get Etsy shop profile. Returns an Etsy shop profile: seller, headline, rating, and sold count. Accepts a numeric shop id or a shop name.\n- **Params:** `id` (string, **required**) — Numeric Etsy shop id or shop name\n\n### `etsy_shop_listings`\n\n- **HTTP:** `GET /etsy/shop/{id}/listings`\n- **What:** Get an Etsy shop's listings. Returns a shop's listing catalog, optionally filtered by keyword. Accepts a numeric shop id or a shop name.\n- **Params:** `id` (string, **required**) — Numeric Etsy shop id or shop name; `limit` (integer, optional) — Page size (default 24); `offset` (integer, optional) — 0-based listing offset; `q` (string, optional) — Keyword filter within the shop's own catalog\n\n### `etsy_shop_reviews`\n\n- **HTTP:** `GET /etsy/shop/{id}/reviews`\n- **What:** Get Etsy shop reviews. Returns buyer reviews for an Etsy shop. Accepts a numeric shop id or a shop name.\n- **Params:** `id` (string, **required**) — Numeric Etsy shop id or shop name; `limit` (integer, optional) — Page size (default 14); `offset` (integer, optional) — 0-based review offset\n\n### `etsy_shop_search`\n\n- **HTTP:** `GET /etsy/shop/search`\n- **What:** Search Etsy shops. Returns Etsy shops matching a keyword.\n- **Params:** `limit` (integer, optional) — Max shops to return (default 10); `q` (string, **required**) — Shop search keyword\n\n## Vinted (7)\n\n### `vinted_brand`\n\n- **HTTP:** `GET /vinted/brand`\n- **What:** Vinted listings for a brand. Returns Vinted listings for a specific brand, with optional price filtering and sort order. `order` values: `relevance`, `newest_first`, `price_high_to_low`, `price_low_to_high`. Public data, sourced from Vinted's own server-rendered brand page.\n- **Params:** `id` (string, **required**) — Numeric Vinted brand ID, from a /vinted/item result's brand link; `order` (string, optional) — Sort order. Allowed values: relevance, newest_first, price_high_to_low, price_low_to_high; `page` (integer, optional) — Page number, starting at 1; `price_from` (number, optional) — Minimum price; `price_to` (number, optional) — Maximum price\n\n### `vinted_brands`\n\n- **HTTP:** `GET /vinted/brands`\n- **What:** Vinted popular-brands directory. Returns Vinted's \"Popular brands\" directory. This is Vinted's own curated list, not an exhaustive list of every brand in its catalog. Each entry's `id` is usable directly as the `id` query parameter to /vinted/brand. Public data, sourced from Vinted's own server-rendered brands page.\n- **Params:** _none_\n\n### `vinted_catalog`\n\n- **HTTP:** `GET /vinted/catalog`\n- **What:** Vinted listing search. Returns Vinted resale listings matching a text search, with optional price filtering and sort order. `order` values: `relevance`, `newest_first`, `price_high_to_low`, `price_low_to_high`. Public data, sourced from Vinted's own server-rendered catalog page.\n- **Params:** `order` (string, optional) — Sort order. Allowed values: relevance, newest_first, price_high_to_low, price_low_to_high; `page` (integer, optional) — Page number, starting at 1; `price_from` (number, optional) — Minimum price; `price_to` (number, optional) — Maximum price; `search_text` (string, **required**) — Search text\n\n### `vinted_categories`\n\n- **HTTP:** `GET /vinted/categories`\n- **What:** Vinted top-level catalog categories. Returns Vinted's top-level catalog categories (e.g. Women, Men, Kids, Home, Electronics, Sports, Entertainment, Hobbies & collectibles). This is the root level only -- Vinted's full category tree goes several levels deeper on the live site, but deeper levels aren't server-rendered so aren't covered here. Each entry's `id` is usable directly as the `id` query parameter to /vinted/category. Public data, sourced from Vinted's own server-rendered catalog navigation.\n- **Params:** _none_\n\n### `vinted_category`\n\n- **HTTP:** `GET /vinted/category`\n- **What:** Vinted listings for a category. Returns Vinted listings for a specific category, with optional price filtering and sort order. `order` values: `relevance`, `newest_first`, `price_high_to_low`, `price_low_to_high`. Public data, sourced from Vinted's own server-rendered category page.\n- **Params:** `id` (string, **required**) — Numeric Vinted category ID, from a /vinted/item result's categories breadcrumb link; `order` (string, optional) — Sort order. Allowed values: relevance, newest_first, price_high_to_low, price_low_to_high; `page` (integer, optional) — Page number, starting at 1; `price_from` (number, optional) — Minimum price; `price_to` (number, optional) — Maximum price\n\n### `vinted_item`\n\n- **HTTP:** `GET /vinted/item`\n- **What:** A single Vinted listing's detail. Returns a single Vinted listing's detail: title, description, brand, size, condition, material, color, price, category breadcrumb, and photos. Public data, sourced from Vinted's own server-rendered item page.\n- **Params:** `id` (string, **required**) — Numeric Vinted item ID, from a /vinted/catalog result's id field\n\n### `vinted_member`\n\n- **HTTP:** `GET /vinted/member`\n- **What:** A Vinted seller's public storefront profile. Returns a Vinted seller's public storefront profile: username, self-disclosed coarse location, rating, and follower/following counts. Deliberately excludes online-presence and activity data (last-seen timestamps, upload-frequency badges) present on the live page. Public data, sourced from Vinted's own server-rendered member page.\n- **Params:** `id` (string, **required**) — Numeric Vinted member ID, from a /vinted/item result's seller link\n\n## StockX (5)\n\n### `stockx_brands`\n\n- **HTTP:** `GET /stockx/brands`\n- **What:** Get StockX brand catalog. Returns StockX's full brand catalog (name and URL slug for every brand in its own brand directory), suitable for building GET /stockx/search's brand parameter or GET /stockx/search's model parameter's required single-brand context. Credential-free public data from the same navigation API backing StockX's own site menu.\n- **Params:** _none_\n\n### `stockx_categories`\n\n- **HTTP:** `GET /stockx/categories`\n- **What:** Get StockX category/subcategory taxonomy. Returns StockX's full category/subcategory reference: the 7 top-level categories accepted by GET /stockx/search's category parameter, each with its subcategories (e.g. Shoes -> Boots, Cleats, Clogs). Credential-free public data from the same navigation API backing StockX's own site menu.\n- **Params:** _none_\n\n### `stockx_product`\n\n- **HTTP:** `GET /stockx/product/{slug}`\n- **What:** Get StockX product detail. Returns a normalized StockX product: identity (title, brand, model, colorway, style id, retail price, release date, description, image), current market data (lowest ask, highest bid, last sale, trailing average price/sales count, delivery-speed ask tiers), individual seller listings (price, condition, size), related-product recommendations (other colorways/siblings StockX surfaces on the product page), and any promotional badges. Credential-free public data from StockX's own product-page GraphQL API.\n- **Params:** `slug` (string, **required**) — StockX product URL slug (the urlKey), the path segment of a https://stockx.com/{slug} product page\n\n### `stockx_releases`\n\n- **HTTP:** `GET /stockx/releases`\n- **What:** Get StockX upcoming release calendar. Returns a date-ordered page (release date ascending) of StockX's upcoming release calendar: new and restocked products releasing on or after the given date, with normalized product summaries, headline pricing, and each item's published release date. Credential-free public data from the same GraphQL API backing StockX's own releases page.\n- **Params:** `from` (string, optional) — Only include releases on or after this date (YYYY-MM-DD, UTC). Defaults to today; `limit` (integer, optional) — Results per page, defaults to 20, maximum 100; `page` (integer, optional) — 1-indexed result page, defaults to 1\n\n### `stockx_search`\n\n- **HTTP:** `GET /stockx/search`\n- **What:** Search/browse StockX products. Browses StockX's product catalog by category with optional free-text keyword search and facet filters (gender, brand, color, shoe height, activity, availability), returning normalized product summaries with headline pricing plus the total matching count. Credential-free public data from the same GraphQL API backing StockX's own category browse pages.\n- **Params:** `activity` (string, optional) — Filter by activity, comma-separated for multiple values; `available_now` (boolean, optional) — Only include products with at least one active ask; `below_retail` (boolean, optional) — Only include products currently trading below original retail price; `brand` (string, optional) — Filter by one or more brand slugs, comma-separated, e.g. jordan,nike; `category` (string, **required**) — StockX top-level category; `color` (string, optional) — Filter by color, comma-separated for multiple values; `gender` (string, optional) — Filter by gender, comma-separated for multiple values; `limit` (integer, optional) — Results per page, defaults to 20, maximum 100; `model` (string, optional) — Filter by a single model slug, e.g. air-force-1. Requires exactly one value in brand; `page` (integer, optional) — 1-indexed result page, defaults to 1; `query` (string, optional) — Free-text keyword search within the category, e.g. a model name or colorway; `shoe_height` (string, optional) — Filter by shoe height, comma-separated for multiple values; `sort` (string, optional) — Result sort order, defaults to featured; `xpress_ship` (boolean, optional) — Only include products with StockX Xpress Ship availability\n\n## Mercari (5)\n\n### `mercari_autocomplete`\n\n- **HTTP:** `GET /mercari/autocomplete`\n- **What:** Mercari search autocomplete. Returns Mercari's own search-suggestion list for a partial keyword, in the upstream's own relevance order. An empty suggestion list is a normal outcome for obscure or gibberish input. Credential-free public data sourced from Mercari's own mobile-app API using an anonymous, login-free session.\n- **Params:** `query` (string, **required**) — Partial keyword to get suggestions for\n\n### `mercari_home`\n\n- **HTTP:** `GET /mercari/home`\n- **What:** Get Mercari home feed. Returns Mercari's own curated home-feed recommendations: normalized listing summaries (title, price, thumbnail, condition, seller). Credential-free public data sourced from Mercari's own mobile-app API using an anonymous, login-free session.\n- **Params:** _none_\n\n### `mercari_item`\n\n- **HTTP:** `GET /mercari/item/{id}`\n- **What:** Get Mercari item detail. Returns a normalized Mercari item-detail page: description, all photos, price, condition, category, hashtags, the shipping origin state, and a \"similar items\" carousel of related listings. Credential-free public data sourced from Mercari's own mobile-app API using an anonymous, login-free session.\n- **Params:** `id` (string, **required**) — Mercari item id, e.g. from a search result's id field\n\n### `mercari_master`\n\n- **HTTP:** `GET /mercari/master`\n- **What:** Get Mercari full taxonomy (categories, brands, sizes). Returns Mercari's full reference taxonomy in one call: every category (with parent linkage), every recognized brand, and every clothing/shoe/apparel size. Large (tens of thousands of brand entries) and effectively static -- cache this response rather than polling it. Credential-free public data sourced from Mercari's own mobile-app API using an anonymous, login-free session.\n- **Params:** _none_\n\n### `mercari_search`\n\n- **HTTP:** `GET /mercari/search`\n- **What:** Search Mercari listings. Searches Mercari's live resale marketplace by free-text keyword, returning normalized listing summaries (title, price, thumbnail, condition, seller) plus the total matching count. Credential-free public data sourced from Mercari's own mobile-app API using an anonymous, login-free session.\n- **Params:** `query` (string, **required**) — Free-text keyword search\n\n## Depop (10)\n\n### `depop_brands`\n\n- **HTTP:** `GET /depop/brands`\n- **What:** Depop's full brand directory. Returns Depop's full brand directory (id, name, slug), not just brands with active listings for a given search -- resolves the search endpoint's otherwise-opaque brand_ids filter to human-readable names. Public data sourced from Depop's own brand-directory API.\n- **Params:** _none_\n\n### `depop_categories`\n\n- **HTTP:** `GET /depop/categories`\n- **What:** Get Depop's category taxonomy. Returns Depop's full department, category, and subcategory taxonomy -- every value usable with /depop/search's and /depop/shop/{username}'s category/subcategory filters. Tries a live refresh from Depop's own category-filter API first and falls back to a static snapshot on any failure, so this never errors.\n- **Params:** _none_\n\n### `depop_item`\n\n- **HTTP:** `GET /depop/item/{slug}`\n- **What:** Get Depop item detail. Returns a normalized Depop item-detail page: description, all photos, price, condition, brand, size, seller info, and a \"similar items\" carousel when the page has one. Public data sourced from Depop's own item pages.\n- **Params:** `slug` (string, **required**) — Depop item URL slug, e.g. from a search result's id field\n\n### `depop_item_similar`\n\n- **HTTP:** `GET /depop/item/{slug}/similar`\n- **What:** Get Depop items similar to a listing. Returns items similar to a given Depop listing, via Depop's dedicated similar-items API -- richer and paginated (up to 150 per page) compared to the small, non-paginated \"similar items\" carousel already included in item detail. Public data sourced from Depop's own similar-items API.\n- **Params:** `after` (string, optional) — Opaque pagination cursor from a previous response's next_cursor field. Omit for the first page.; `limit` (integer, optional) — Max results per page, 1-150; `slug` (string, **required**) — Depop item URL slug, e.g. from a search result's id field\n\n### `depop_search`\n\n- **HTTP:** `GET /depop/search`\n- **What:** Search Depop listings. Searches Depop's resale-fashion marketplace by free-text keyword, with optional price, condition, colour, category, subcategory, gender, kids-department, brand, discount, and sort filters, returning normalized listing summaries (title, price, brand, condition, like count, photos, sizes), a pagination cursor, and the total matching count. Public data sourced from Depop's own search API.\n- **Params:** `after` (string, optional) — Opaque pagination cursor from a previous response's next_cursor field. Omit for the first page.; `brand_ids` (string, optional) — Comma-separated Depop internal numeric brand ids. Not documented by Depop -- find a brand's id by browsing its depop.com/brands/<slug>/ page.; `category` (string, optional) — Depop category slug: tops, bottoms, dresses, coats-jackets, jumpsuit-and-playsuit, suits, footwear, accessories, nightwear, underwear, swim-beach-wear, fancy-dress, sleepsuits-and-bodysuits, bundles, beauty, face-masks, home, tech-accessories, film, art, books-and-magazine, music, party-supplies, sports-equipment-accesories, toys, umbrella. See GET /depop/categories for a machine-readable enumeration with names and subcategories.; `colours` (string, optional) — Comma-separated colour filter: black, grey, white, brown, tan, cream, yellow, red, burgundy, orange, pink, purple, blue, navy, green, khaki, multi; `condition` (string, optional) — Comma-separated condition filter: brand_new, used_like_new, used_excellent, used_good, used_fair; `gender` (string, optional) — Department filter: female, male; `is_kids` (boolean, optional) — Kids-department filter: true restricts results to kids items only, false excludes them, omitted returns both.; `on_sale` (boolean, optional) — Restrict results to discounted listings; `price_max` (number, optional) — Maximum listing price in USD; `price_min` (number, optional) — Minimum listing price in USD; `query` (string, **required**) — Free-text keyword search; `sizes` (string, optional) — Comma-separated Depop size composite ids (format {size_set_id}.{id}, e.g. \\; `sort` (string, optional) — Sort order: relevance, price_low_to_high, price_high_to_low; `subcategory` (string, optional) — Comma-separated Depop subcategory slug(s), scoped within category. See GET /depop/categories for the full list per category.\n\n### `depop_search_facets`\n\n- **HTTP:** `GET /depop/search/facets`\n- **What:** Depop search result-count breakdowns. Returns result-count breakdowns per department/category/subcategory for a search query, via Depop's dedicated aggregates API -- a distinct upstream call from search itself, not embedded in its response. Public data sourced from Depop's own search-aggregates API.\n- **Params:** `query` (string, **required**) — Free-text keyword search\n\n### `depop_search_sellers`\n\n- **HTTP:** `GET /depop/search-sellers`\n- **What:** Search Depop sellers by name. Finds Depop users/sellers by name or username. A matched result's username can be passed directly to GET /depop/shop/{username} for that seller's full shop. Public data sourced from Depop's own user-search API.\n- **Params:** `query` (string, **required**) — Seller name or username to search for\n\n### `depop_shop`\n\n- **HTTP:** `GET /depop/shop/{username}`\n- **What:** Get a Depop seller's shop. Returns a Depop seller's public shop: profile (rating, sold count, followers, bio) plus current listings, with optional price, condition, colour, category, subcategory, gender, discount, and sort filters. Public data sourced from Depop's own shop pages.\n- **Params:** `category` (string, optional) — Depop category slug: tops, bottoms, dresses, coats-jackets, jumpsuit-and-playsuit, suits, footwear, accessories, nightwear, underwear, swim-beach-wear, fancy-dress, sleepsuits-and-bodysuits, bundles, beauty, face-masks, home, tech-accessories, film, art, books-and-magazine, music, party-supplies, sports-equipment-accesories, toys, umbrella. See GET /depop/categories for a machine-readable enumeration with names and subcategories.; `colours` (string, optional) — Comma-separated colour filter: black, grey, white, brown, tan, cream, yellow, red, burgundy, orange, pink, purple, blue, navy, green, khaki, multi; `condition` (string, optional) — Comma-separated condition filter: brand_new, used_like_new, used_excellent, used_good, used_fair; `gender` (string, optional) — Department filter: female, male; `on_sale` (boolean, optional) — Restrict results to discounted listings; `price_max` (number, optional) — Maximum listing price in USD; `price_min` (number, optional) — Minimum listing price in USD; `sizes` (string, optional) — Comma-separated Depop size composite ids (format {size_set_id}.{id}, e.g. \\; `sort` (string, optional) — Sort order: relevance, price_low_to_high, price_high_to_low, recently_listed; `subcategory` (string, optional) — Comma-separated Depop subcategory slug(s), scoped within category. See GET /depop/categories for the full list per category.; `username` (string, **required**) — Depop seller username, e.g. from a shop page URL segment\n\n### `depop_sizes`\n\n- **HTTP:** `GET /depop/sizes`\n- **What:** Get Depop's size taxonomy. Returns Depop's full, multi-region size taxonomy -- every composite id usable with /depop/search's and /depop/shop/{username}'s sizes filter. Public data sourced from Depop's own size-filter API.\n- **Params:** _none_\n\n### `depop_suggest`\n\n- **HTTP:** `GET /depop/suggest`\n- **What:** Depop search-box autocomplete. Returns Depop's own search-box autocomplete suggestions for a partial query, including the category a suggestion maps to when relevant. Public data sourced from Depop's own search-suggestions API.\n- **Params:** `query` (string, **required**) — Partial search query to autocomplete\n\n## Whatnot (3)\n\n### `whatnot_browse`\n\n- **HTTP:** `GET /whatnot/browse`\n- **What:** Browse Whatnot live shows by category. Returns the live and upcoming shows currently listed under a Whatnot category: seller, title, status, start time, thumbnail, and tags. Public data sourced from Whatnot's own GraphQL API.\n- **Params:** `category` (string, **required**) — Whatnot category slug. See GET /whatnot/categories for the full list.\n\n### `whatnot_categories`\n\n- **HTTP:** `GET /whatnot/categories`\n- **What:** Get Whatnot's category list. Returns Whatnot's full top-level category list (e.g. \"Trading Card Games\", \"Sneakers & Streetwear\"). Each entry's slug is usable directly with /whatnot/browse's category filter. Public data sourced from Whatnot's own GraphQL API.\n- **Params:** _none_\n\n### `whatnot_live`\n\n- **HTTP:** `GET /whatnot/live/{id}`\n- **What:** Get a Whatnot live show's current shop feed. Returns a Whatnot live show's current shop feed: every product, auction, and giveaway listing currently visible in the show, each with its seller's rating. Public data sourced from Whatnot's own GraphQL API.\n- **Params:** `id` (string, **required**) — Whatnot live show id, e.g. from a browse result's id field\n\n## GOAT (10)\n\n### `goat_collection`\n\n- **HTTP:** `GET /goat/collection`\n- **What:** Get a GOAT curated product collection. Returns a page of one of GOAT's curated product collections (an editorial rail like \"top trending\" or \"new arrivals\"), the same call GOAT's own product-page \"you may also like\" rails and homepage modules use. Collection slugs are not enumerable by this API -- capture one from a live GOAT page. Credential-free public data.\n- **Params:** `exclude_product_ids` (string, optional) — Omit specific products by id, comma-separated; `limit` (integer, optional) — Results per page, defaults to 12, maximum 100; `page` (integer, optional) — 1-indexed result page, defaults to 1; `slug` (string, **required**) — GOAT collection slug, e.g. as seen in a curated rail on GOAT's own site\n\n### `goat_countries`\n\n- **HTTP:** `GET /goat/countries`\n- **What:** Get GOAT countries. Returns every country GOAT recognizes -- the accepted values for GET /goat/product/{slug}'s country_code parameter -- with the currency and size unit (us, uk, eu) GOAT localizes to for each, plus whether GOAT ships and accepts returns there. Every country is listed, not only the shippable ones, because country_code localizes pricing and is accepted for all of them; filter on ships_to if you want only GOAT's shipping destinations. Credential-free public data.\n- **Params:** _none_\n\n### `goat_curated`\n\n- **HTTP:** `GET /goat/curated`\n- **What:** Get GOAT curated links. Returns the shelf of editorially curated links GOAT is currently promoting in its own search box: seasonal collections, specific product searches, and browse-all entry points. Every link is actionable against this API -- a collection link carries a value for GET /goat/collection, a search link carries a query for GET /goat/search. Credential-free public data.\n- **Params:** _none_\n\n### `goat_listings_count`\n\n- **HTTP:** `GET /goat/listings/count`\n- **What:** Get GOAT live listing count. Returns how many listings GOAT currently has live across its whole marketplace. This is the only way to see GOAT's true catalog size, because GET /goat/search's total_results saturates at 10000 on a broad query and cannot report a total above that ceiling. Credential-free public data.\n- **Params:** _none_\n\n### `goat_product`\n\n- **HTTP:** `GET /goat/product/{slug}`\n- **What:** Get GOAT product detail. Returns a normalized GOAT product: identity/descriptive metadata (name, brand, SKU, colorway, designer, silhouette, taxonomy, materials, release date, retail price, editorial story, images, full size range, other products featured alongside it), plus live per-size/condition pricing and stock status (lowest price, GOAT Instant Ship price, last sold price, highest current buyer offer). Credential-free public data combining GOAT's own product-page payload with its live pricing and offers APIs.\n- **Params:** `country_code` (string, optional) — ISO 3166-1 alpha-2 country code used to localize per-size pricing, defaults to US; `slug` (string, **required**) — GOAT product URL slug, the path segment of a https://www.goat.com/sneakers/{slug} product page\n\n### `goat_product_recommended`\n\n- **HTTP:** `GET /goat/product/{slug}/recommended`\n- **What:** Get GOAT recommended products for a product. Returns the recommended/related products GOAT's own product page shows for a given product (other colorways, similar products) -- descriptive metadata only, no live pricing. Credential-free public data from GOAT's own product-page recommendation API.\n- **Params:** `count` (integer, optional) — Number of recommended products to return, defaults to 8, maximum 24; `slug` (string, **required**) — GOAT product URL slug to find related products for\n\n### `goat_search`\n\n- **HTTP:** `GET /goat/search`\n- **What:** Search GOAT products. Searches or browses GOAT's sneaker/streetwear/collectibles catalog by free-text query and/or facet filters (category, footwear sub-type, activity, color, gender, condition, brand, release year, price range, release-date range, silhouette, designer, in-stock/under-retail/instant-ship, curated collection), returning normalized product summaries (brand, silhouette, category, image, stock status, headline pricing across all sizes) plus the total matching count. Query is optional -- a facet filter alone browses the catalog the same way GOAT's own category/brand pages do. Credential-free public data from the same JSON API backing GOAT's own search page.\n- **Params:** `activities` (string, optional) — Filter by activity (sneakers only), comma-separated for multiple values; `brands` (string, optional) — Filter by one or more brand slugs, comma-separated, e.g. air-jordan,nike. GET /goat/search/facets lists GOAT's top brands; long-tail brands are valid here even when absent from that list; `categories` (string, optional) — Filter by category, comma-separated for multiple values. See GET /goat/search/facets for the current live list; `collection_slug` (string, optional) — Scope results to a GOAT curated collection (see GET /goat/collection), combinable with query, every other filter, and sort; `colors` (string, optional) — Filter by color, comma-separated for multiple values; `conditions` (string, optional) — Filter by item condition, comma-separated for multiple values; `designers` (string, optional) — Filter by one or more designers, comma-separated, matching GOAT's own naming (see a product's designer field); `genders` (string, optional) — Filter by gender, comma-separated for multiple values; `in_stock` (boolean, optional) — Only include products currently in stock; `instant_ship` (boolean, optional) — Only include products with GOAT Instant Ship availability; `limit` (integer, optional) — Results per page, defaults to 12, maximum 100; `page` (integer, optional) — 1-indexed result page, defaults to 1; `price_cents_max` (integer, optional) — Only include results priced at or below this amount, in cents; `price_cents_min` (integer, optional) — Only include results priced at or above this amount, in cents; `product_types` (string, optional) — Filter by footwear sub-type, comma-separated for multiple values; `query` (string, optional) — Free-text search query, e.g. a model name, colorway, or style code. Optional -- omit to browse by facet filters alone; `released_after` (string, optional) — Only include products released on or after this date (YYYY-MM-DD, UTC); `released_before` (string, optional) — Only include products released on or before this date (YYYY-MM-DD, UTC); `silhouettes` (string, optional) — Filter by one or more silhouettes, comma-separated, matching GOAT's own naming (see a product's silhouette field); `sort` (string, optional) — Result sort order, defaults to relevance; `under_retail` (boolean, optional) — Only include products currently trading below original retail price; `years` (string, optional) — Filter by season year(s), comma-separated, e.g. 2025,2026. See GET /goat/search/facets for the current live list\n\n### `goat_search_facets`\n\n- **HTTP:** `GET /goat/search/facets`\n- **What:** Get GOAT search facet values. Returns the accepted values for goat_search's filter parameters: categories, colors, genders, conditions, brands, and years are read live from GOAT's own search API so a value GOAT adds is discoverable without any client-side change, while product_types and activities are served from a maintained list because GOAT exposes no live facet for them. brands is GOAT's top brands ordered by product count, not the complete brand list -- when brands_truncated is true, brands beyond the ones listed exist and remain valid goat_search values. Credential-free public data.\n- **Params:** _none_\n\n### `goat_suggest`\n\n- **HTTP:** `GET /goat/suggest`\n- **What:** Autocomplete a GOAT search. Returns GOAT's own search-box autocomplete for a partial query: matching curated collections and matching products. The collections carry the slug values accepted by GET /goat/collection and by GET /goat/search's collection_slug parameter, making this the way to discover collection slugs. Credential-free public data.\n- **Params:** `limit` (integer, optional) — Maximum curated collections to return. Defaults to 8, maximum 20. Does not affect the product count, which upstream fixes at 25; `query` (string, **required**) — Partial search text to autocomplete\n\n### `goat_trending_searches`\n\n- **HTTP:** `GET /goat/searches/trending`\n- **What:** Get GOAT trending searches. Returns the search terms GOAT is currently surfacing as popular, in GOAT's own ranking order -- the same list its own search box shows. Each term is free text ready to pass to GET /goat/search's query parameter. Credential-free public data.\n- **Params:** _none_\n\n## Leboncoin (2)\n\n### `leboncoin_listing`\n\n- **HTTP:** `GET /leboncoin/listing`\n- **What:** Get a Leboncoin public listing. Returns normalized public metadata for one supplied Leboncoin ad URL. It excludes seller identity and contacts, precise location, payment, delivery, and account data.\n- **Params:** `url` (string, **required**) — Canonical public ad URL returned by leboncoin-search\n\n### `leboncoin_search`\n\n- **HTTP:** `GET /leboncoin/search`\n- **What:** Search Leboncoin public listings. Returns normalized public listing cards from one Leboncoin location page. This endpoint excludes contacts, seller profiles, accounts, and transaction data.\n- **Params:** `location` (string, **required**) — Public Leboncoin location slug\n\nFile v1.0.17:skill-card.md\n\n## Description:\n\nResearches secondhand, resale, and handmade marketplaces through the Crawlora API, including Poshmark, Etsy, Vinted, StockX, Mercari, Depop, Whatnot, GOAT, and Leboncoin, and returns clean JSON for listing, seller, shop, and price research.\n\nThis skill is ready for commercial/non-commercial use.\n\n## Publisher:\n\n[crawlora-org](https://clawhub.ai/user/crawlora-org)\n\n### License/Terms of Use:\n\nMIT-0\n\n## Use Case:\n\nExternal users, developers, and shopping researchers use this skill to search and compare public marketplace listings, inspect seller or shop storefronts, and check resale pricing through Crawlora API calls.\n\n### Deployment Geography for Use:\n\nGlobal\n\n## Known Risks and Mitigations:\n\nRisk: Marketplace search terms, seller or shop names, listing IDs, URLs, and the Crawlora API key are sent to Crawlora.\n\nMitigation: Avoid sensitive personal information in queries and keep the Crawlora API key in the environment instead of hardcoding, logging, or committing it.\n\nRisk: Successful Crawlora API calls may consume account credits.\n\nMitigation: Keep requests within the user's requested marketplace and route scope, and avoid broad exploratory calls unless they are needed for the task.\n\nRisk: Some endpoints require specific parameters, such as StockX and Whatnot category values or numeric Vinted brand and category IDs.\n\nMitigation: Consult the endpoint reference before calling those routes and resolve required IDs or categories first.\n\n## Reference(s):\n\n- [Endpoint reference](reference/endpoints.md)\n- [Crawlora](https://crawlora.net)\n- [Crawlora API base](https://api.crawlora.net/api/v1)\n- [ClawHub skill page](https://clawhub.ai/crawlora-org/skills/resale-secondhand-research)\n\n## Skill Output:\n\n**Output Type(s):** [text, markdown, JSON, shell commands, configuration, guidance]\n\n**Output Format:** [Markdown guidance with shell commands and JSON API responses]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [Uses CRAWLORA_API_KEY from the environment; successful API calls may consume Crawlora credits.]\n\n## Skill Version(s):\n\n1.0.17 (source: server release evidence)\n\n## Ethical Considerations:\n\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment.\n\nArchive v1.0.16: 5 files, 15116 bytes\n\nFiles: reference/endpoints.md (37542b), scripts/crawlora.sh (6388b), skill-card.md (1917b), SKILL.md (4870b), _meta.json (146b)\n\nFile v1.0.16:SKILL.md\n\n---\nname: resale-secondhand-research\ndescription: Researches secondhand, resale, and handmade marketplaces via the Crawlora API — Poshmark, Etsy, Vinted, StockX, Mercari, Depop, and Whatnot — returning clean JSON. Use when the user wants to find or compare listings, check a seller/shop, look up sneaker/streetwear resale prices, or research handmade/vintage goods.\n---\n\n# Resale & secondhand marketplace research\n\nSearch listings, sellers, and prices across seven C2C resale, streetwear,\nand handmade marketplaces as normalized JSON from the Crawlora API — no\nscraping app storefronts.\n\n## When to use this skill\n\n- \"Find <item> for sale on <platform>\" / compare listings.\n- \"What's this seller's/shop's closet/storefront like?\"\n- \"What's the resale price for these sneakers?\" (StockX)\n- \"Find handmade/vintage <item>\" (Etsy).\n- \"What's live right now?\" (Whatnot livestream shopping).\n\n## Setup (one-time)\n\n- Get a free Crawlora API key (2,000 credits/mo, no card) at [https://crawlora.net](https://crawlora.net?utm_source=github&utm_medium=referral&utm_campaign=crawlora-skills).\n- Set `CRAWLORA_API_KEY` in the environment before running the helper.\n- The helper reads `CRAWLORA_API_KEY` from the environment and sends requests to `https://api.crawlora.net/api/v1`. Missing/invalid key → `401`.\n\n## How it works\n\n1. **Poshmark** — `/poshmark/search` (`query`) to find listings;\n   `/poshmark/listing/{id}` for detail; `/poshmark/closet/{username}` for a\n   seller's storefront; `/poshmark/brand/{name}` / `/poshmark/category/{path}`\n   to browse.\n2. **Etsy** — `/etsy/search` (`q`) for listings; `/etsy/listing/{id}` (+\n   `/reviews`) for detail; `/etsy/shop/search` / `/etsy/shop/{id}` (+\n   `/listings`, `/reviews`) for a shop's storefront.\n3. **Vinted** — `/vinted/catalog` (`search_text`) for listings;\n   `/vinted/item/{id}` for detail; `/vinted/member/{id}` for a seller;\n   `/vinted/brand`/`/vinted/category` to filter by brand/category id\n   (resolve ids via `/vinted/brands`/`/vinted/categories`).\n4. **StockX** — `/stockx/search` **requires `category`** (e.g. `sneakers`,\n   `apparel`, `collectibles`; `query` is the optional keyword within it) to\n   find a `slug`, then `/stockx/product/{slug}` for market data;\n   `/stockx/releases` for upcoming drops.\n5. **Mercari** — `/mercari/search` (`query`) for listings;\n   `/mercari/item/{id}` for detail; `/mercari/autocomplete` for query suggestions.\n6. **Depop** — `/depop/search` (`query`, plus filters like `brand_ids`,\n   `condition`, `price_min`/`price_max`) for listings; `/depop/item/{slug}`\n   for detail; `/depop/shop/{username}` for a seller's storefront.\n7. **Whatnot** — `/whatnot/browse` **requires `category`** to list live/\n   upcoming shows; `/whatnot/live/{id}` for one livestream's detail.\n\nFull endpoint list, methods, and params: [`reference/endpoints.md`](reference/endpoints.md).\n\n## Calling the API\n\n```sh\n# Search a marketplace:\nscripts/crawlora.sh /poshmark/search query=\"vintage levis jacket\" | jq '.'\nscripts/crawlora.sh /etsy/search q=\"handmade ceramic mug\" | jq '.'\nscripts/crawlora.sh /vinted/catalog search_text=\"north face jacket\" | jq '.'\n\n# StockX (category required):\nscripts/crawlora.sh /stockx/search category=sneakers query=\"jordan 4\" | jq '.'\n\n# Seller/shop lookup:\nscripts/crawlora.sh /depop/shop/<handle> | jq '.'\n```\n\nUse `scripts/crawlora.sh` for all requests; it keeps the API key out of command-line arguments.\n\n\n## Endpoint reference\n\nSee [`reference/endpoints.md`](reference/endpoints.md) for every Poshmark,\nEtsy, Vinted, StockX, Mercari, Depop, and Whatnot endpoint this skill uses.\n\n## Examples\n\n- **Cross-platform price compare:** search the same item on Poshmark,\n  Depop, Vinted, and Mercari, then diff asking prices.\n- **Sneaker resale check:** `/stockx/search category=sneakers query=\"...\"` →\n  `/stockx/product/{slug}` for current market price vs. retail.\n- **Seller vetting:** `/poshmark/closet/{username}` or `/depop/shop/{username}`\n  before buying, to check listing count and activity.\n- **Handmade sourcing:** `/etsy/search` for a category, then\n  `/etsy/shop/{id}/reviews` on top shops before ordering a custom piece.\n\n## Notes & limits\n\n- **Credits /\n\nArchive v1.0.15: 5 files, 15076 bytes\n\nFiles: reference/endpoints.md (37542b), scripts/crawlora.sh (5084b), skill-card.md (2410b), SKILL.md (4870b), _meta.json (146b)\n\nArchive v1.0.14: 5 files, 14835 bytes\n\nFiles: reference/endpoints.md (37542b), scripts/crawlora.sh (4827b), skill-card.md (2094b), SKILL.md (4870b), _meta.json (146b)\n\nArchive v1.0.13: 5 files, 14732 bytes\n\nFiles: reference/endpoints.md (37542b), scripts/crawlora.sh (4502b), skill-card.md (2299b), SKILL.md (4911b), _meta.json (146b)\n\nArchive v1.0.12: 5 files, 14694 bytes\n\nFiles: reference/endpoints.md (37542b), scripts/crawlora.sh (4202b), skill-card.md (2445b), SKILL.md (4911b), _meta.json (146b)\n\nArchive v1.0.11: 5 files, 14564 bytes\n\nFiles: reference/endpoints.md (37542b), scripts/crawlora.sh (4154b), skill-card.md (2119b), SKILL.md (4911b), _meta.json (146b)\n\nArchive v1.0.10: 5 files, 13828 bytes\n\nFiles: reference/endpoints.md (37542b), scripts/crawlora.sh (2005b), skill-card.md (2191b), SKILL.md (4885b), _meta.json (146b)","readmeExcerpt":"Skill: resale-secondhand-research Owner: crawlora-org Summary: Researches secondhand, resale, and handmade marketplaces via the Crawlora API — Poshmark, Etsy, Vinted, StockX, Mercari, Depop, Whatnot, GOAT, and Leboncoin — returning clean JSON. Use when the user wants to find or compare listings, check a seller/shop, look up sneaker/streetwear resale prices, or research handmade/vintage goods. Tags: latest:1.0.19 Vers","codeSnippets":[],"executableExamples":[{"language":"sh","snippet":"# Search a marketplace:\nscripts/crawlora.sh /poshmark/search query=\"vintage levis jacket\" | jq '.'\nscripts/crawlora.sh /etsy/search q=\"handmade ceramic mug\" | jq '.'\nscripts/crawlora.sh /vinted/catalog search_text=\"north face jacket\" | jq '.'\n\n# StockX (category required):\nscripts/crawlora.sh /stockx/search category=sneakers query=\"jordan 4\" | jq '.'\n\n# Seller/shop lookup:\nscripts/crawlora.sh /depop/shop/<handle> | jq '.'"},{"language":"sh","snippet":"# Search a marketplace:\nscripts/crawlora.sh /poshmark/search query=\"vintage levis jacket\" | jq '.'\nscripts/crawlora.sh /etsy/search q=\"handmade ceramic mug\" | jq '.'\nscripts/crawlora.sh /vinted/catalog search_text=\"north face jacket\" | jq '.'\n\n# StockX (category required):\nscripts/crawlora.sh /stockx/search category=sneakers query=\"jordan 4\" | jq '.'\n\n# Seller/shop lookup:\nscripts/crawlora.sh /depop/shop/<handle> | jq '.'"},{"language":"sh","snippet":"# Search a marketplace:\nscripts/crawlora.sh /poshmark/search query=\"vintage levis jacket\" | jq '.'\nscripts/crawlora.sh /etsy/search q=\"handmade ceramic mug\" | jq '.'\nscripts/crawlora.sh /vinted/catalog search_text=\"north face jacket\" | jq '.'\n\n# StockX (category required):\nscripts/crawlora.sh /stockx/search category=sneakers query=\"jordan 4\" | jq '.'\n\n# Seller/shop lookup:\nscripts/crawlora.sh /depop/shop/<handle> | jq '.'"},{"language":"sh","snippet":"# Search a marketplace:\nscripts/crawlora.sh /poshmark/search query=\"vintage levis jacket\" | jq '.'\nscripts/crawlora.sh /etsy/search q=\"handmade ceramic mug\" | jq '.'\nscripts/crawlora.sh /vinted/catalog search_text=\"north face jacket\" | jq '.'\n\n# StockX (category required):\nscripts/crawlora.sh /stockx/search category=sneakers query=\"jordan 4\" | jq '.'\n\n# Seller/shop lookup:\nscripts/crawlora.sh /depop/shop/<handle> | jq '.'"}],"parameters":null,"dependencies":[],"permissions":[],"extractedFiles":[{"path":"SKILL.md","content":"---\nname: resale-secondhand-research\ndescription: Researches secondhand, resale, and handmade marketplaces via the Crawlora API — Poshmark, Etsy, Vinted, StockX, Mercari, Depop, Whatnot, GOAT, and Leboncoin — returning clean JSON. Use when the user wants to find or compare listings, check a seller/shop, look up sneaker/streetwear resale prices, or research handmade/vintage goods.\n---\n\n# Resale & secondhand marketplace research\n\nSearch listings, sellers, and prices across nine C2C resale, streetwear,\nand handmade marketplaces as normalized JSON from the Crawlora API — no\nscraping app storefronts.\n\n## When to use this skill\n\n- \"Find <item> for sale on <platform>\" / compare listings.\n- \"What's this seller's/shop's closet/storefront like?\"\n- \"What's the resale price for these sneakers?\" (StockX)\n- \"Find handmade/vintage <item>\" (Etsy).\n- \"What's live right now?\" (Whatnot livestream shopping).\n\n## Setup (one-time)\n\n- Get a free Crawlora API key (2,000 credits/mo, no card) at [https://crawlora.net](https://crawlora.net?utm_source=github&utm_medium=referral&utm_campaign=crawlora-skills).\n- Set `CRAWLORA_API_KEY` in the environment before running the helper.\n- The helper reads `CRAWLORA_API_KEY` from the environment and sends requests to `https://api.crawlora.net/api/v1`. Missing/invalid key → `401`.\n\n## How it works\n\n1. **Poshmark** — `/poshmark/search` (`query`) to find listings;\n   `/poshmark/listing/{id}` for detail; `/poshmark/closet/{username}` for a\n   seller's storefront; `/poshmark/brand/{name}` / `/poshmark/category/{path}`\n   to browse.\n2. **Etsy** — `/etsy/search` (`q`) for listings; `/etsy/listing/{id}` (+\n   `/reviews`) for detail; `/etsy/shop/search` / `/etsy/shop/{id}` (+\n   `/listings`, `/reviews`) for a shop's storefront.\n3. **Vinted** — `/vinted/catalog` (`search_text`) for listings;\n   `/vinted/item/{id}` for detail; `/vinted/member/{id}` for a seller;\n   `/vinted/brand`/`/vinted/category` to filter by brand/category id\n   (resolve ids via `/vinted/brands`/`/vinted/categories`).\n4. **StockX** — `/stockx/search` **requires `category`** (e.g. `sneakers`,\n   `apparel`, `collectibles`; `query` is the optional keyword within it) to\n   find a `slug`, then `/stockx/product/{slug}` for market data;\n   `/stockx/releases` for upcoming drops.\n5. **Mercari** — `/mercari/search` (`query`) for listings;\n   `/mercari/item/{id}` for detail; `/mercari/autocomplete` for query suggestions.\n6. **Depop** — `/depop/search` (`query`, plus filters like `brand_ids`,\n   `condition`, `price_min`/`price_max`) for listings; `/depop/item/{slug}`\n   for detail; `/depop/shop/{username}` for a seller's storefront.\n7. **Whatnot** — `/whatnot/browse` **requires `category`** to list live/\n   upcoming shows; `/whatnot/live/{id}` for one livestream's detail.\n8. **GOAT** — `/goat/search` for sneaker, streetwear, and collectible products;\n   `/goat/product/{slug}` for pricing and product detail; `/goat/collection`,\n   `/goat/curated`, `/goat/suggest`, and `/goat/searches/tr"},{"path":"_meta.json","content":"{\n  \"ownerId\": \"kn70shhkf6qpfwgfrbgtep2wkd8c6b4t\",\n  \"slug\": \"resale-secondhand-research\",\n  \"version\": \"1.0.19\",\n  \"publishedAt\": 1790648596479\n}"},{"path":"reference/endpoints.md","content":"# resale-secondhand-research — endpoint reference\n\n> Generated from `scripts/tools.json` by `scripts/generate.mjs` — do not edit by hand.\n\nEndpoints this skill uses, grouped by platform. Call them via `scripts/crawlora.sh` (see SKILL.md).\n\nAll paths are relative to the API base `https://api.crawlora.net/api/v1` and require the header `x-api-key: $CRAWLORA_API_KEY`. Path params like `{id}` are substituted into the URL; `GET` params go in the query string; `POST` params go in a JSON body.\n\n**58 endpoints across 9 platform group(s).**\n\n## Poshmark (8)\n\n### `poshmark_brand`\n\n- **HTTP:** `GET /poshmark/brand/{name}`\n- **What:** Browse Poshmark listings by brand. Returns a page of normalized Poshmark listings for a given brand name (e.g. Nike), the same browsing view as Poshmark's own brand pages. Pass a previous response's next_max_id back as max_id to fetch the next page. Credential-free public data sourced from Poshmark's own server-rendered brand page and, for pages past the first, Poshmark's own JSON pagination API.\n- **Params:** `max_id` (string, optional) — Opaque pagination cursor from a previous response's next_max_id. Omit for the first page; `name` (string, **required**) — Poshmark brand name, matching the path segment of a /brand/{name} URL\n\n### `poshmark_brands`\n\n- **HTTP:** `GET /poshmark/brands`\n- **What:** Get the full Poshmark brand directory. Returns Poshmark's full brand directory: every brand Poshmark recognizes (name, slug, logo, known aliases), not just brands with active listings for a given search or category filter. Useful for resolving a brand name to the exact value the brand/search filters expect. Credential-free public data sourced from Poshmark's own server-rendered brand directory page.\n- **Params:** _none_\n\n### `poshmark_categories`\n\n- **HTTP:** `GET /poshmark/categories`\n- **What:** Get the Poshmark department/category browse taxonomy. Returns Poshmark's full department/category browse taxonomy (e.g. Women > Shoes, Men > Jackets & Coats). Each entry's path resolves directly against the category endpoint. This is reference data that changes rarely, so responses are cached. Credential-free public data sourced from Poshmark's own server-rendered category pages.\n- **Params:** _none_\n\n### `poshmark_category`\n\n- **HTTP:** `GET /poshmark/category/{path}`\n- **What:** Browse Poshmark listings by category. Returns a page of normalized Poshmark listings for a given category path (e.g. Women-Shoes, Men-Shirts), the same browsing view as Poshmark's own category pages. Pass a previous response's next_max_id back as max_id to fetch the next page. Credential-free public data sourced from Poshmark's own server-rendered category page and, for pages past the first, Poshmark's own JSON pagination API.\n- **Params:** `max_id` (string, optional) — Opaque pagination cursor from a previous response's next_max_id. Omit for the first page; `path` (string, **required**) — Poshmark category path segment, e.g. Women-Shoes, Men-Shirts\n\n### `poshmark_"},{"path":"skill-card.md","content":"## Description:\n\nResearches public secondhand, resale, and handmade listings, sellers, and prices across nine marketplaces through the Crawlora API.\n\nThis skill is ready for commercial/non-commercial use.\n\n## Publisher:\n\n[crawlora-org](https://clawhub.ai/user/crawlora-org)\n\n### License/Terms of Use:\n\nMIT-0\n\n## Use Case:\n\nShoppers, resellers, and researchers use this skill to find and compare public listings, inspect shops and sellers, and check resale prices across supported marketplaces.\n\n### Deployment Geography for Use:\n\nGlobal\n\n## Known Risks and Mitigations:\n\nRisk: Marketplace searches and the Crawlora API key are sent to Crawlora.\n\nMitigation: Use the skill only when that disclosure is acceptable; keep the key in the environment and never commit it.\n\nRisk: Unnecessary marketplace or route requests may consume API credits.\n\nMitigation: Limit requests to the marketplaces and routes the user asked for.\n\n## Reference(s):\n\n- [ClawHub skill listing](https://clawhub.ai/crawlora-org/skills/resale-secondhand-research)\n- [Supported API endpoints](reference/endpoints.md)\n\n## Skill Output:\n\n**Output Type(s):** [Text, Guidance, Shell commands]\n\n**Output Format:** [JSON from marketplace queries; Markdown or plain-text research summaries]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [Public listing, seller, and pricing results; API requests may consume Crawlora credits.]\n\n## Skill Version(s):\n\n1.0.19 (source: ClawHub release metadata)\n\n## Ethical Considerations:\n\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment."}],"languages":[],"docsSourceLabel":"CLAWHUB","editorialOverview":null,"editorialQuality":{"score":100,"threshold":65,"status":"thin","wordCount":1527,"uniquenessScore":40,"reasons":["uniqueness-below-45"]}},"media":{"evidence":{"source":"no-media","verified":false,"confidence":"low","updatedAt":"2026-10-11T11:57:28.160Z","emptyReason":"No screenshots, media assets, or demo links are available."},"primaryImageUrl":null,"mediaAssetCount":0,"assets":[],"demoUrl":null},"ownerResources":{"evidence":{"source":"unclaimed","verified":false,"confidence":"low","updatedAt":"2026-10-11T11:57:28.160Z","emptyReason":"This page has not been claimed by the agent owner."},"hasCustomPage":false,"customPageUpdatedAt":null,"customLinks":[],"structuredLinks":{"docsUrl":null,"demoUrl":null,"supportUrl":null,"pricingUrl":null,"statusUrl":null},"customPage":null},"relatedAgents":{"evidence":{"source":"protocol-neighbors","verified":false,"confidence":"medium","updatedAt":"2026-10-11T15:15:30.028Z","emptyReason":null},"items":[{"id":"8ebccd8e-3863-4187-8355-c3f14e1f9edf","entityType":"agent","canonicalPath":"/agent/iofficeai-aionui","slug":"iofficeai-aionui","name":"AionUi","description":"Free, local, open-source 24/7 Cowork app and OpenClaw for Gemini CLI, Claude Code, Codex, OpenCode, Qwen Code, Goose CLI, Auggie, and more | 🌟 Star if you like it!","url":"https://github.com/iOfficeAI/AionUi","homepage":"https://www.aionui.com","source":"GITHUB_REPOS","protocols":["MCP","OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-10-09T19:11:12.944Z","createdAt":"2026-02-25T03:38:16.584Z","downloads":null},{"id":"b917f68a-ebff-438e-84f8-3f4b2494c0bc","entityType":"agent","canonicalPath":"/agent/activepieces-activepieces","slug":"activepieces-activepieces","name":"activepieces","description":"AI Agents & MCPs & AI Workflow Automation • (~400 MCP servers for AI agents) • AI Automation / AI Agent with MCPs • AI Workflows & AI Agents • MCPs for AI Agents","url":"https://github.com/activepieces/activepieces","homepage":"https://www.activepieces.com","source":"GITHUB_REPOS","protocols":["OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-04-15T02:22:12.426Z","createdAt":"2026-02-25T03:38:12.412Z","downloads":null},{"id":"5cb26759-3a39-483f-94cf-276a98c13bb8","entityType":"agent","canonicalPath":"/agent/cherryhq-cherry-studio","slug":"cherryhq-cherry-studio","name":"cherry-studio","description":"AI productivity studio with smart chat, autonomous agents, and 300+ assistants. Unified access to frontier LLMs","url":"https://github.com/CherryHQ/cherry-studio","homepage":"https://cherry-ai.com","source":"GITHUB_REPOS","protocols":["MCP","OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-04-11T14:38:40.986Z","createdAt":"2026-02-25T03:38:19.379Z","downloads":null},{"id":"6f6582d0-5d76-4f0f-b81d-86520247950b","entityType":"agent","canonicalPath":"/agent/copilotkit-copilotkit","slug":"copilotkit-copilotkit","name":"CopilotKit","description":"The Frontend for Agents & Generative UI. React + Angular","url":"https://github.com/CopilotKit/CopilotKit","homepage":"https://docs.copilotkit.ai","source":"GITHUB_REPOS","protocols":["OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-03-25T09:50:57.846Z","createdAt":"2026-02-25T03:39:14.617Z","downloads":null}],"links":{"hub":"/agent","source":"/agent/source/clawhub","protocols":[{"label":"OpenClaw","href":"/agent/protocol/openclew"}]}}}