mastra-scavio 0.5.0 → 0.7.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +128 -4
- package/dist/index.cjs +3438 -372
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +261 -23
- package/dist/index.d.ts +261 -23
- package/dist/index.js +3317 -371
- package/dist/index.js.map +1 -1
- package/package.json +27 -3
package/README.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# mastra-scavio
|
|
2
2
|
|
|
3
|
-
[Scavio](https://scavio.dev) real-time
|
|
3
|
+
[Scavio](https://scavio.dev) real-time data tools for [Mastra](https://mastra.ai) agents — **188 tools across 31 platforms** on one API key. Retail (Amazon, Walmart, eBay, Target, Home Depot), real estate (Zillow, Redfin), travel (Booking.com, Airbnb, Tripadvisor), local (Yelp, Google Maps), jobs (Indeed, Glassdoor, LinkedIn), software reviews (G2, Capterra), app stores (App Store, Google Play), company filings (SEC EDGAR, Companies House), ad libraries (Google Ads Transparency, Meta Ad Library), search (Google) and social (YouTube, TikTok, Instagram, X, Reddit, Threads, Kuaishou) — plus `scavioExtract`, which reads any URL as clean Markdown, and five opt-in tools that map a site's URLs, crawl a whole site or batch-extract a URL list.
|
|
4
4
|
|
|
5
5
|
> **Amazon changed (breaking).** The upstream provider moved in 2026-07:
|
|
6
6
|
> `domain` is replaced by `country`, a two-letter marketplace code (`us`, `gb`
|
|
@@ -53,13 +53,15 @@ const agent = new Agent({
|
|
|
53
53
|
|
|
54
54
|
## Tools
|
|
55
55
|
|
|
56
|
-
`createScavioTools()` returns **
|
|
56
|
+
`createScavioTools()` returns **188 tools** across 31 platforms plus `extract` — one per billable Scavio endpoint — and **193** with `{ enableCrawl: true }`, which adds the five website tools. Requires `scavio@^0.23.0`.
|
|
57
57
|
|
|
58
58
|
| Platform | Tools | Names |
|
|
59
59
|
|---|---|---|
|
|
60
|
+
| [Extract (any URL)](https://scavio.dev/docs/extract) | 1 | `scavioExtract` |
|
|
61
|
+
| Website map, crawl, batch (opt-in: `enableCrawl`) | 5 | `scavioMapWebsite`, `scavioCrawlWebsite`, `scavioCrawlStatus`, `scavioBatchExtract`, `scavioBatchStatus` |
|
|
60
62
|
| Google | 14 | `scavioGoogleSearch`, `scavioGoogleAiMode`, `scavioGoogleMapsSearch`, `scavioGoogleMapsPlace`, `scavioGoogleMapsReviews`, `scavioGoogleShopping`, `scavioGoogleShoppingProduct`, `scavioGoogleShoppingStores`, `scavioGoogleFlights`, `scavioGoogleHotels`, `scavioGoogleHotelsDetail`, `scavioGoogleNews`, `scavioGoogleTrends`, `scavioGoogleTrending` |
|
|
61
63
|
| Amazon | 3 | `scavioAmazonSearch`, `scavioAmazonProduct`, `scavioAmazonOffers` |
|
|
62
|
-
| Walmart |
|
|
64
|
+
| [Walmart](https://scavio.dev/docs/walmart-api) | 7 | `scavioWalmartSearch`, `scavioWalmartProduct`, `scavioWalmartReviews`, `scavioWalmartCategory`, `scavioWalmartOffers`, `scavioWalmartSeller`, `scavioWalmartSellerProducts` |
|
|
63
65
|
| YouTube | 15 | `scavioYoutubeSearch`, `scavioYoutubeShorts`, `scavioYoutubeSuggestions`, `scavioYoutubeVideo`, `scavioYoutubeComments`, `scavioYoutubeCommentReplies`, `scavioYoutubeTranscript`, `scavioYoutubeRelated`, `scavioYoutubeChannelSearch`, `scavioYoutubeChannel`, `scavioYoutubeChannelVideos`, `scavioYoutubeChannelShorts`, `scavioYoutubeChannelCommunity`, `scavioYoutubeChannelResolve`, `scavioYoutubeStreams` |
|
|
64
66
|
| Reddit | 12 | `scavioRedditSearch`, `scavioRedditSearchSuggestions`, `scavioRedditPost`, `scavioRedditPostComments`, `scavioRedditCommentReplies`, `scavioRedditSubreddit`, `scavioRedditSubredditPosts`, `scavioRedditUser`, `scavioRedditUserPosts`, `scavioRedditUserComments`, `scavioRedditPopular`, `scavioRedditTrending` |
|
|
65
67
|
| TikTok | 11 | `scavioTiktokProfile`, `scavioTiktokUserPosts`, `scavioTiktokVideo`, `scavioTiktokVideoComments`, `scavioTiktokCommentReplies`, `scavioTiktokSearchVideos`, `scavioTiktokSearchUsers`, `scavioTiktokHashtag`, `scavioTiktokHashtagVideos`, `scavioTiktokUserFollowers`, `scavioTiktokUserFollowings` |
|
|
@@ -67,6 +69,27 @@ const agent = new Agent({
|
|
|
67
69
|
| Instagram | 12 | `scavioInstagramProfile`, `scavioInstagramUserPosts`, `scavioInstagramUserReels`, `scavioInstagramUserTagged`, `scavioInstagramUserStories`, `scavioInstagramPost`, `scavioInstagramPostComments`, `scavioInstagramCommentReplies`, `scavioInstagramSearchUsers`, `scavioInstagramSearchHashtags`, `scavioInstagramUserFollowers`, `scavioInstagramUserFollowings` |
|
|
68
70
|
| X (Twitter) | 11 | `scavioXSearch`, `scavioXTweet`, `scavioXTweetComments`, `scavioXTweetRetweeters`, `scavioXUser`, `scavioXUserTweets`, `scavioXUserReplies`, `scavioXUserMedia`, `scavioXUserFollowers`, `scavioXUserFollowings`, `scavioXTrending` |
|
|
69
71
|
| LinkedIn | 9 | `scavioLinkedinPerson`, `scavioLinkedinPersonAbout`, `scavioLinkedinPersonPosts`, `scavioLinkedinCompany`, `scavioLinkedinCompanyPosts`, `scavioLinkedinSearchJobs`, `scavioLinkedinJob`, `scavioLinkedinPost`, `scavioLinkedinPostComments` |
|
|
72
|
+
| [Threads](https://scavio.dev/docs/threads-profile) | 6 | `scavioThreadsProfile`, `scavioThreadsUserPosts`, `scavioThreadsUserReplies`, `scavioThreadsPost`, `scavioThreadsPostComments`, `scavioThreadsSearchUsers` |
|
|
73
|
+
| [Kuaishou](https://scavio.dev/docs/kuaishou-profile) | 14 | `scavioKuaishouProfile`, `scavioKuaishouUserPosts`, `scavioKuaishouUserLive`, `scavioKuaishouUserResolve`, `scavioKuaishouVideo`, `scavioKuaishouVideoComments`, `scavioKuaishouCommentReplies`, `scavioKuaishouVideosBatch`, `scavioKuaishouSearch`, `scavioKuaishouSearchVideos`, `scavioKuaishouSearchUsers`, `scavioKuaishouSearchLive`, `scavioKuaishouTagFeed`, `scavioKuaishouTrending` |
|
|
74
|
+
| [eBay](https://scavio.dev/docs/ebay-search) | 3 | `scavioEbaySearch`, `scavioEbayProduct`, `scavioEbaySeller` |
|
|
75
|
+
| [Target](https://scavio.dev/docs/target-search) | 4 | `scavioTargetSearch`, `scavioTargetCategory`, `scavioTargetProduct`, `scavioTargetReviews` |
|
|
76
|
+
| [Home Depot](https://scavio.dev/docs/home-depot-search) | 3 | `scavioHomeDepotSearch`, `scavioHomeDepotProduct`, `scavioHomeDepotReviews` |
|
|
77
|
+
| [Zillow](https://scavio.dev/docs/zillow-search) | 3 | `scavioZillowSearch`, `scavioZillowProperty`, `scavioZillowAgentReviews` |
|
|
78
|
+
| [Booking.com](https://scavio.dev/docs/booking-search) | 3 | `scavioBookingSearch`, `scavioBookingHotel`, `scavioBookingReviews` |
|
|
79
|
+
| [Tripadvisor](https://scavio.dev/docs/tripadvisor-locations) | 4 | `scavioTripadvisorLocations`, `scavioTripadvisorSearch`, `scavioTripadvisorLocation`, `scavioTripadvisorReviews` |
|
|
80
|
+
| [Indeed](https://scavio.dev/docs/indeed-search) | 4 | `scavioIndeedSearch`, `scavioIndeedJob`, `scavioIndeedCompany`, `scavioIndeedCompanyReviews` |
|
|
81
|
+
| [Airbnb](https://scavio.dev/docs/airbnb-search) | 3 | `scavioAirbnbSearch`, `scavioAirbnbListing`, `scavioAirbnbReviews` |
|
|
82
|
+
| [Glassdoor](https://scavio.dev/docs/glassdoor-companies) | 4 | `scavioGlassdoorCompanies`, `scavioGlassdoorCompany`, `scavioGlassdoorReviews`, `scavioGlassdoorSalaries` |
|
|
83
|
+
| [Yelp](https://scavio.dev/docs/yelp-search) | 3 | `scavioYelpSearch`, `scavioYelpBusiness`, `scavioYelpReviews` |
|
|
84
|
+
| [App Store](https://scavio.dev/docs/app-store-search) | 3 | `scavioAppStoreSearch`, `scavioAppStoreApp`, `scavioAppStoreReviews` |
|
|
85
|
+
| [Google Play](https://scavio.dev/docs/google-play-search) | 3 | `scavioGooglePlaySearch`, `scavioGooglePlayApp`, `scavioGooglePlayReviews` |
|
|
86
|
+
| [SEC EDGAR](https://scavio.dev/docs/sec-edgar-lookup) | 6 | `scavioSecLookup`, `scavioSecCompany`, `scavioSecFilings`, `scavioSecConcept`, `scavioSecFacts`, `scavioSecSearch` |
|
|
87
|
+
| [Redfin](https://scavio.dev/docs/redfin-search) | 3 | `scavioRedfinSearch`, `scavioRedfinProperty`, `scavioRedfinMarket` |
|
|
88
|
+
| [Companies House](https://scavio.dev/docs/companies-house-search) | 4 | `scavioCompaniesHouseSearch`, `scavioCompaniesHouseCompany`, `scavioCompaniesHouseOfficers`, `scavioCompaniesHouseFilingHistory` |
|
|
89
|
+
| [G2](https://scavio.dev/docs/g2-search) | 3 | `scavioG2Search`, `scavioG2Product`, `scavioG2Reviews` |
|
|
90
|
+
| [Capterra Software Reviews](https://scavio.dev/docs/capterra-search) | 3 | `scavioCapterraSearch`, `scavioCapterraProduct`, `scavioCapterraReviews` |
|
|
91
|
+
| [Google Ads Transparency](https://scavio.dev/docs/google-ads-advertisers) | 3 | `scavioGoogleAdsAdvertisers`, `scavioGoogleAdsSearch`, `scavioGoogleAdsCreative` |
|
|
92
|
+
| [Meta Ad Library](https://scavio.dev/docs/meta-ads-search) | 3 | `scavioMetaAdsSearch`, `scavioMetaAdsAdvertiser`, `scavioMetaAdsAd` |
|
|
70
93
|
|
|
71
94
|
Every tool is also exported individually as `createScavio<Name>Tool`.
|
|
72
95
|
|
|
@@ -78,6 +101,9 @@ Each tool returns the structured Scavio JSON response: `{ data, response_time, c
|
|
|
78
101
|
- LinkedIn `person/contact`, `company/people`, `company/jobs`, `search/people` and `search/posts` were retired upstream and answer HTTP 410 unbilled. `scavioLinkedinCompany` returns `featured_employees` (a 4-6 person sample) in place of `company/people`, and `scavioLinkedinSearchJobs` with the company name replaces `company/jobs`.
|
|
79
102
|
- `/api/v1/google` (Google v1) was retired on 2026-08-04 and answers 410. The Google tools speak v2 natively — `gl`, `hl`, `start`, `google_domain`, `device`. `start` is a 0-based result offset (0 is page 1, 10 is page 2), not a page number, so no `page` parameter is offered.
|
|
80
103
|
|
|
104
|
+
- Google Play `search` and App Store `search` do not paginate: raise `limit` (App Store, up to 200) or take the one shelf Play serves. No `page` parameter is offered because neither store honours one.
|
|
105
|
+
- Glassdoor `reviews` caps at three reviews per response — that is Glassdoor's login wall, not a parameter — so no `page` is offered there either. Move the window with `category` and `employment_status`.
|
|
106
|
+
|
|
81
107
|
Everything else the Scavio API bills for has a tool here. The same endpoints are also available directly via the [`scavio`](https://www.npmjs.com/package/scavio) SDK or the [MCP server](https://scavio.dev/docs).
|
|
82
108
|
|
|
83
109
|
### Renamed in 0.5.0
|
|
@@ -91,13 +117,86 @@ Reddit, TikTok and Instagram shipped two tools each before 0.5.0; the rest of th
|
|
|
91
117
|
|
|
92
118
|
`scavioRedditSearch`, `scavioRedditPost`, `scavioTiktokProfile` and `scavioInstagramProfile` are unchanged.
|
|
93
119
|
|
|
120
|
+
### New in 0.7.0
|
|
121
|
+
|
|
122
|
+
Five website tools, opt-in with `createScavioTools({ enableCrawl: true })` so the default set is unchanged: `scavioMapWebsite`, `scavioCrawlWebsite`, `scavioCrawlStatus`, `scavioBatchExtract` and `scavioBatchStatus`. Requires `scavio@^0.23.0`, whose `extract` became a callable namespace (`scavio.extract({ url })` still reads one page). See [Map, crawl and batch](#map-crawl-and-batch).
|
|
123
|
+
|
|
124
|
+
### New in 0.6.0
|
|
125
|
+
|
|
126
|
+
91 tools: 21 new platforms, five more Walmart endpoints, and `scavioExtract`. Nothing was renamed or removed. Three things worth knowing:
|
|
127
|
+
|
|
128
|
+
- **Requires `scavio@^0.15.0`.** An older SDK has none of the new namespaces, and every new tool fails at build.
|
|
129
|
+
- **`scavioExtract` is the fallback for everything else.** It reads any URL and returns clean Markdown (or plain text, or raw HTML), so an agent that lands on a page no platform endpoint covers still has a move. It leads `createScavioTools()` for that reason, and it is a top-level SDK method — `scavio.extract({ url })`, never `scavio.extract.extract()`.
|
|
130
|
+
- **Walmart moved from 2 tools to 7** and its two original tools were migrated to the spec pattern the rest of the package uses. `createScavioWalmartSearchTool` and `createScavioWalmartProductTool` keep their names and tool ids. One input tightened: `sort_by` on the search tool was an open string and is now the closed enum the API actually accepts (`best_match`, `price_low`, `price_high`, `best_seller`, `rating_high`, `new`) — a value outside it was never honoured upstream, it was just billed.
|
|
131
|
+
|
|
132
|
+
## Map, crawl and batch
|
|
133
|
+
|
|
134
|
+
Five opt-in tools for whole sites, behind `createScavioTools({ enableCrawl: true })` (off by default, because a
|
|
135
|
+
crawl bills per page):
|
|
136
|
+
|
|
137
|
+
| Tool | What it does | Credits |
|
|
138
|
+
|---|---|---|
|
|
139
|
+
| `scavio-map-website` | List a site's page URLs from its sitemaps and start page, deduplicated and filtered by path or search words | 1 (normal mode; advanced up to 2, ultra up to 10) |
|
|
140
|
+
| `scavio-crawl-website` | Crawl a site from one URL; every same-site page as Markdown, text or HTML | per successful page |
|
|
141
|
+
| `scavio-crawl-status` | A crawl's progress and page results, cursor-paged | free |
|
|
142
|
+
| `scavio-batch-extract` | Extract a list of URLs (up to 1,000, plan-limited) in one job | per successful page |
|
|
143
|
+
| `scavio-batch-status` | A batch's progress and page results, cursor-paged | free |
|
|
144
|
+
|
|
145
|
+
Map answers in one call. Crawl and batch run as background jobs: the start tool
|
|
146
|
+
posts the job and then **waits up to `wait_seconds` (default 45, max 300)** for
|
|
147
|
+
it to finish, returning the job's status with its first page of results (10 by
|
|
148
|
+
default, `limit` up to 100) either way. A job still `queued` or `running` when
|
|
149
|
+
the wait ends keeps going server-side: read the rest later with the matching
|
|
150
|
+
status tool, the returned `data.id` and `next_cursor`. That keeps an agent turn
|
|
151
|
+
bounded while a large crawl (up to 6 hours) runs on.
|
|
152
|
+
|
|
153
|
+
```typescript
|
|
154
|
+
import { createScavioTools, createScavioCrawlWebsiteTool } from 'mastra-scavio';
|
|
155
|
+
|
|
156
|
+
// Everything, plus the five website tools:
|
|
157
|
+
const tools = createScavioTools({ enableCrawl: true });
|
|
158
|
+
|
|
159
|
+
// Or just the crawler:
|
|
160
|
+
const agent = new Agent({
|
|
161
|
+
id: 'docs-agent',
|
|
162
|
+
name: 'Docs Agent',
|
|
163
|
+
model: 'anthropic/claude-sonnet-4-6',
|
|
164
|
+
instructions: 'Crawl documentation sites with Scavio and answer from them.',
|
|
165
|
+
tools: { crawl: createScavioCrawlWebsiteTool() },
|
|
166
|
+
});
|
|
167
|
+
// scavio-crawl-website({ url: "https://hono.dev/docs", max_pages: 25, include_paths: ["/docs/**"] })
|
|
168
|
+
// -> { data: { id, status: "completed" | "running", pages, credits_used, results, next_cursor } }
|
|
169
|
+
```
|
|
170
|
+
|
|
171
|
+
**Pricing.** Crawl and batch bill **per successful page** at Extract's price for
|
|
172
|
+
the mode: `normal` (the standard fetch) and `advanced` (renders JavaScript-built
|
|
173
|
+
pages) 1 credit, `ultra` (the hardest pages) 2. Failed and skipped pages are
|
|
174
|
+
free, and if your balance runs out the job stops cleanly with
|
|
175
|
+
`stopped_reason: "insufficient_credits"`. Reading a job is free. Crawl and map
|
|
176
|
+
obey the site's robots.txt, and results are kept for 3 days.
|
|
177
|
+
|
|
178
|
+
**Plan limits** (pages per crawl / active jobs / URLs per batch): Free 10/1/10,
|
|
179
|
+
PAYG 100/1/50, Project 500/2/100, Bootstrap 2,000/3/500, Startup 5,000/5/1,000,
|
|
180
|
+
Growth 10,000/10/1,000.
|
|
181
|
+
|
|
182
|
+
Cancellation, webhooks (signed `Scavio-Signature`) and idempotency keys exist in
|
|
183
|
+
the `scavio` SDK (`extract.cancelCrawl`, `webhook_url`, `idempotencyKey`) and the
|
|
184
|
+
[REST API](https://scavio.dev/docs/extract), but are deliberately not agent tools.
|
|
185
|
+
|
|
94
186
|
## Credits
|
|
95
187
|
|
|
96
188
|
Most calls cost 1 credit. Every tool states its own cost in its description, so an agent can budget before it fans out.
|
|
97
189
|
|
|
98
190
|
| Tool | Credits |
|
|
99
191
|
|---|---|
|
|
100
|
-
| All Google, Amazon,
|
|
192
|
+
| All Google, Amazon, Reddit, TikTok, TikTok Shop and X tools | 1 |
|
|
193
|
+
| All eBay, Target, Zillow, Redfin, Booking.com, Airbnb, App Store, SEC EDGAR, Companies House, Google Ads Transparency and Meta Ad Library tools | 1 |
|
|
194
|
+
| All Home Depot, Tripadvisor, Indeed, Yelp, Google Play and Capterra tools | 2 |
|
|
195
|
+
| All G2 tools | 5 |
|
|
196
|
+
| `scavioKuaishouVideo` | 2 |
|
|
197
|
+
| `scavioKuaishouProfile`, `scavioKuaishouSearch`, `scavioKuaishouSearchVideos`, `scavioKuaishouSearchUsers`, `scavioKuaishouSearchLive` | 10 |
|
|
198
|
+
| `scavioKuaishouVideosBatch` | 40 |
|
|
199
|
+
| All other Kuaishou tools | 1 |
|
|
101
200
|
| `scavioYoutubeSearch`, `scavioYoutubeShorts` | 2 |
|
|
102
201
|
| `scavioYoutubeStreams` | 3 |
|
|
103
202
|
| `scavioYoutubeTranscript` | 8 |
|
|
@@ -110,3 +209,28 @@ Most calls cost 1 credit. Every tool states its own cost in its description, so
|
|
|
110
209
|
| All other Instagram tools | 10 |
|
|
111
210
|
|
|
112
211
|
Instagram is priced per endpoint rather than flat, on three tiers: 10 where both upstream legs are billed, 8 for the two calls with no fallback leg to hedge (`scavioInstagramPost`, `scavioInstagramCommentReplies`), and 2 for `scavioInstagramUserPosts`, whose cheap leg is the primary one. Prefer `scavioInstagramUserPosts` over `scavioInstagramUserReels` when the timeline will do — same shape of data, one fifth of the cost. Paginated tools bill per page. See [scavio.dev/docs](https://scavio.dev/docs).
|
|
212
|
+
|
|
213
|
+
### These surfaces are priced by the request body
|
|
214
|
+
|
|
215
|
+
No single number is true for these, so each tool states its own price and none of them says a flat cost:
|
|
216
|
+
|
|
217
|
+
| Surface | Price |
|
|
218
|
+
|---|---|
|
|
219
|
+
| `scavioWalmartSearch`, `scavioWalmartCategory` | 1 credit on `domain` `com` or `ca`, **2 on `com.mx`**. The other five Walmart tools take no `domain` and are always 1. |
|
|
220
|
+
| `scavioThreadsProfile`, `scavioThreadsUserPosts`, `scavioThreadsUserReplies` | **2 credits addressed by `user_id`, 4 by `username`** — a handle buys a second upstream call, because the upstream handle lookup is dead. Pass `user_id` whenever you have it. The other three Threads tools have no username form and are always 2. |
|
|
221
|
+
| Kuaishou | **Per endpoint, 1 to 40.** See the table above; one platform-wide figure would be wrong by up to 40x. |
|
|
222
|
+
| `scavioExtract` | 1 credit on `mode` `normal` or `advanced`, **2 on `ultra`**. Only a successful extraction is billed — a dead link, bot wall or timeout costs nothing. |
|
|
223
|
+
| `scavioMapWebsite` | 1 credit on `mode` `normal`; up to 2 on `advanced`, up to 10 on `ultra`, priced by what the call needed. |
|
|
224
|
+
| `scavioCrawlWebsite`, `scavioBatchExtract` | **Per successful page**: 1 credit on `normal` or `advanced`, 2 on `ultra`. Failed and skipped pages are free; the two status tools are free. |
|
|
225
|
+
|
|
226
|
+
### Lookup-first platforms
|
|
227
|
+
|
|
228
|
+
Five platforms are keyed by ids that exist only inside their own URLs, so a caller holding a *name* has to resolve it before anything else will answer:
|
|
229
|
+
|
|
230
|
+
| Platform | Start with |
|
|
231
|
+
|---|---|
|
|
232
|
+
| Tripadvisor | `scavioTripadvisorLocations` |
|
|
233
|
+
| Glassdoor | `scavioGlassdoorCompanies` |
|
|
234
|
+
| SEC EDGAR | `scavioSecLookup` |
|
|
235
|
+
| Companies House | `scavioCompaniesHouseSearch` |
|
|
236
|
+
| Google Ads Transparency | `scavioGoogleAdsAdvertisers` |
|