Stayingapi new inventory lead gen
Skill stayingapi/travel-skills/skills/stayingapi-new-inventory-lead-gen
Portable AI-agent skills (SKILL.md) for accommodation search, availability, pricing, cross-OTA comparison & reviews via StayingAPI. Works with Claude, MCP and more. MIT-0.
npx -y skills add stayingapi/travel-skills --skill stayingapi-new-inventory-lead-genAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
One thing to look at
- 0 stars0 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
What its author says it does
Copied from the file, not written here
Re-run a saved search on a schedule, diff it against the last run, and sync only the newly-listed properties into a CRM or Sheet as leads. Powered by the StayingAPI REST API / MCP server.
The file declares its own license as Proprietary — see https://stayingapi.com/terms. That is the author’s claim about this one file, and it is not the same thing as the license GitHub reports for the repository, which is listed with the other numbers below.
SKILL.md
4.9 KB, as published. Nobody here has run it
New-inventory monitor → CRM lead feed
Fresh inventory is a lead: a new short-term rental appearing in your target market is a management pitch, an acquisition target, or a comp to underwrite. This workflow re-runs your saved search on a schedule, keeps a memory of everything it has already seen, and emits only the listings that are new since the last run — one row per lead, with platform, name, URL, beds, rating and price — straight into your CRM or a Google Sheet. The first run quietly seeds the baseline so you are never flooded with the whole market.
- Base URL:
https://api.stayingapi.com/v1(REST) · MCP:https://mcp.stayingapi.com/mcp - Auth:
Authorization: Bearer stay_live_…(free sandbox:stay_test_…). - Get a free key (no card): https://stayingapi.com/signup · Full machine contract: https://api.stayingapi.com/openapi.json
Steps
- Define the market to watch — Give the workflow a location (and optional dates, platforms and result limit) — the same inputs you would use for a one-off search, saved as a recurring watch.
- Re-run the search on a schedule — On each scheduled run it calls GET /v1/search across the requested platforms and merges every match into one normalized Property list.
- Diff against the last run — The transform compares the result ids against the ids it saw last time (kept in n8n workflow static data) and keeps only the listings that are new — the first run seeds the baseline silently.
- Sync new leads to your CRM or Sheet — Each new listing is emitted as its own row (platform, name, URL, beds, rating, price) and appended to a Google Sheet or pushed to your CRM — swap the delivery node for Slack to get a new-inventory ping instead.
When to use this
The user wants to be told when new inventory appears in a market — a new short-term rental to pitch, acquire, or benchmark — rather than running a one-off search. This is a scheduled, stateful watch: search, then diff against what you saw last time.
How to do it
- Call
GET /v1/searchwith the savedlocation(+ optionalcheckIn/checkOut,platforms,limit,currency). - Compare the returned
data[].idvalues against the set of ids from the previous run (persist it — n8n static data, a Sheet column, or your CRM). The new ids are the leads. - Emit one record per new listing:
platform,name,url,location.city,bedrooms,maxOccupancy,guestRating/ratingScale,price.nightlyPrice/totalPrice. - On the first run, seed the baseline and emit nothing — otherwise you flag the whole market.
Newly-available variant
For "known listings that just opened up," keep a watchlist of listing ids and poll
GET /v1/availability over your window; a date flipping to bookable: true is also a lead.
Partial results
Check meta.partial / meta.platformResults[] — attribute leads per platform and note any
platform that failed so a gap is not mistaken for "no new inventory."
Example — REST
curl -sS "https://api.stayingapi.com/v1/search?location=Split,HR&platforms=airbnb,vrbo,booking&limit=30¤cy=EUR" \
-H "Authorization: Bearer $STAYINGAPI_KEY"
Example — @stayingapi/sdk
import { StayingApiClient } from '@stayingapi/sdk';
const scout = new StayingApiClient({ apiKey: process.env.STAYINGAPI_KEY });
const { data, meta } = await scout.search({
location: 'Split, HR',
platforms: ['airbnb', 'vrbo', 'booking'],
limit: 30,
currency: 'EUR',
});
// Diff against your own store of previously-seen ids to get just the new leads.
const ids = data.map((p) => p.id);
console.log(data.length, 'listings', meta.creditsCharged, 'credits');
Async & partial failures
A live call that has to scrape returns 202 + a jobId; poll GET /v1/jobs/{jobId} (free)
until data.status is completed, then read data.result. The @stayingapi/sdk auto-polls.
On a fan-out, check meta.partial and meta.platformResults[] — report what succeeded and note
any meta.warnings[].
Credit awareness
Costs are per-endpoint and metered by result (v3). Failed, empty and blocked calls are never
billed, and sandbox (stay_test_) calls are always free. The exact, current costs live only in
https://stayingapi.com/pricing and the machine-readable https://api.stayingapi.com/openapi.json — read them there, don't assume.
Get your free key → https://stayingapi.com/signup · Docs: https://stayingapi.com/docs · Workflow: https://stayingapi.com/workflows/new-inventory-lead-gen