scrapercity 1.0.6 → 1.0.7

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/AGENT_DOCS.txt CHANGED
@@ -1,6 +1,31 @@
1
1
  SCRAPERCITY API REFERENCE - FOR AI AGENTS
2
2
  ==========================================
3
3
 
4
+
5
+ PRICING (auto-generated from the live catalog - do not edit)
6
+
7
+ <!-- GENERATED:pricing:start -->
8
+ | Tool | Endpoint | Price |
9
+ |------|----------|-------|
10
+ | `scrape_apollo` | /api/v1/scrape/apollo | $0.0039 per lead |
11
+ | `scrape_website_finder` | /api/v1/scrape/website-finder | $0.05 per contact found |
12
+ | `find_people` | /api/v1/scrape/skip-trace | $0.0199 per result (searches with 0 matches are billed as 1 result) |
13
+ | `scrape_distress_list` | /api/v1/scrape/distress-list | $0.05 per property |
14
+ | `validate_emails` | /api/v1/scrape/email-validator | $0.0072 per email |
15
+ | `scrape_maps` | /api/v1/scrape/maps | $0.0099 per business |
16
+ | `scrape_airbnb` | /api/v1/scrape/airbnb-email | $0.019 per result ($19.00 per 1,000) |
17
+ | `scrape_bizbuysell` | /api/v1/scrape/bizbuysell-scraper | $0.01 per listing |
18
+ | `scrape_crexi` | /api/v1/scrape/crexi-scraper | $0.029 per property |
19
+ | `scrape_angi` | /api/v1/scrape/angi-angies-list-scraper | $0.01 per listing |
20
+ | `scrape_yelp` | /api/v1/scrape/yelp-scraper | $0.01 per result |
21
+ | `scrape_zillow_agents` | /api/v1/scrape/zillow-agents | $0.029 per agent |
22
+ | `search_criminal_records` | /api/v1/scrape/criminal-records | $1.00 per search (only charged if records found) |
23
+ | `scrape_store_leads` | /api/v1/scrape/store-leads | $0.0039 per lead |
24
+ | `scrape_builtwith` | /api/v1/scrape/techstack | $4.99 per technology |
25
+ | `find_emails` | /api/v1/scrape/email-finder | $0.05 per email found (FREE if not found) |
26
+ | `find_mobiles` | /api/v1/scrape/mobile-finder | $0.25 per number found (FREE if not found) |
27
+ <!-- GENERATED:pricing:end -->
28
+
4
29
  BASE: https://app.scrapercity.com
5
30
  AUTH: Authorization: Bearer <api_key>
6
31
  ALL RESPONSES: JSON
package/README.md CHANGED
@@ -66,6 +66,30 @@ curl -O https://app.scrapercity.com/api/downloads/RUN_ID \
66
66
  -H "Authorization: Bearer $SCRAPERCITY_API_KEY"
67
67
  ```
68
68
 
69
+ ## Pricing (auto-generated from the live catalog — do not edit)
70
+
71
+ <!-- GENERATED:pricing:start -->
72
+ | Tool | Endpoint | Price |
73
+ |------|----------|-------|
74
+ | `scrape_apollo` | /api/v1/scrape/apollo | $0.0039 per lead |
75
+ | `scrape_website_finder` | /api/v1/scrape/website-finder | $0.05 per contact found |
76
+ | `find_people` | /api/v1/scrape/skip-trace | $0.0199 per result (searches with 0 matches are billed as 1 result) |
77
+ | `scrape_distress_list` | /api/v1/scrape/distress-list | $0.05 per property |
78
+ | `validate_emails` | /api/v1/scrape/email-validator | $0.0072 per email |
79
+ | `scrape_maps` | /api/v1/scrape/maps | $0.0099 per business |
80
+ | `scrape_airbnb` | /api/v1/scrape/airbnb-email | $0.019 per result ($19.00 per 1,000) |
81
+ | `scrape_bizbuysell` | /api/v1/scrape/bizbuysell-scraper | $0.01 per listing |
82
+ | `scrape_crexi` | /api/v1/scrape/crexi-scraper | $0.029 per property |
83
+ | `scrape_angi` | /api/v1/scrape/angi-angies-list-scraper | $0.01 per listing |
84
+ | `scrape_yelp` | /api/v1/scrape/yelp-scraper | $0.01 per result |
85
+ | `scrape_zillow_agents` | /api/v1/scrape/zillow-agents | $0.029 per agent |
86
+ | `search_criminal_records` | /api/v1/scrape/criminal-records | $1.00 per search (only charged if records found) |
87
+ | `scrape_store_leads` | /api/v1/scrape/store-leads | $0.0039 per lead |
88
+ | `scrape_builtwith` | /api/v1/scrape/techstack | $4.99 per technology |
89
+ | `find_emails` | /api/v1/scrape/email-finder | $0.05 per email found (FREE if not found) |
90
+ | `find_mobiles` | /api/v1/scrape/mobile-finder | $0.25 per number found (FREE if not found) |
91
+ <!-- GENERATED:pricing:end -->
92
+
69
93
  ## Available Tools
70
94
 
71
95
  | Tool | What it does | Cost |
package/SKILL.md CHANGED
@@ -15,6 +15,30 @@ GET /api/downloads/{runId} → CSV file
15
15
  ```
16
16
  Auth: `Authorization: Bearer $SCRAPERCITY_API_KEY` on all requests.
17
17
 
18
+ ## Pricing (auto-generated from the live catalog — do not edit)
19
+
20
+ <!-- GENERATED:pricing:start -->
21
+ | Tool | Endpoint | Price |
22
+ |------|----------|-------|
23
+ | `scrape_apollo` | /api/v1/scrape/apollo | $0.0039 per lead |
24
+ | `scrape_website_finder` | /api/v1/scrape/website-finder | $0.05 per contact found |
25
+ | `find_people` | /api/v1/scrape/skip-trace | $0.0199 per result (searches with 0 matches are billed as 1 result) |
26
+ | `scrape_distress_list` | /api/v1/scrape/distress-list | $0.05 per property |
27
+ | `validate_emails` | /api/v1/scrape/email-validator | $0.0072 per email |
28
+ | `scrape_maps` | /api/v1/scrape/maps | $0.0099 per business |
29
+ | `scrape_airbnb` | /api/v1/scrape/airbnb-email | $0.019 per result ($19.00 per 1,000) |
30
+ | `scrape_bizbuysell` | /api/v1/scrape/bizbuysell-scraper | $0.01 per listing |
31
+ | `scrape_crexi` | /api/v1/scrape/crexi-scraper | $0.029 per property |
32
+ | `scrape_angi` | /api/v1/scrape/angi-angies-list-scraper | $0.01 per listing |
33
+ | `scrape_yelp` | /api/v1/scrape/yelp-scraper | $0.01 per result |
34
+ | `scrape_zillow_agents` | /api/v1/scrape/zillow-agents | $0.029 per agent |
35
+ | `search_criminal_records` | /api/v1/scrape/criminal-records | $1.00 per search (only charged if records found) |
36
+ | `scrape_store_leads` | /api/v1/scrape/store-leads | $0.0039 per lead |
37
+ | `scrape_builtwith` | /api/v1/scrape/techstack | $4.99 per technology |
38
+ | `find_emails` | /api/v1/scrape/email-finder | $0.05 per email found (FREE if not found) |
39
+ | `find_mobiles` | /api/v1/scrape/mobile-finder | $0.25 per number found (FREE if not found) |
40
+ <!-- GENERATED:pricing:end -->
41
+
18
42
  ## All Scrapers (POST to /api/v1/scrape/{slug})
19
43
 
20
44
  | Slug | Input | Cost | Speed |
package/bin/cli.mjs CHANGED
@@ -97,40 +97,6 @@ async function main() {
97
97
  break
98
98
  }
99
99
 
100
- // ── Apollo Filters ────────────────────────────────────
101
- case 'apollo-filters': {
102
- const filters = {}
103
- for (const f of ['--seniority', '--function', '--industry', '--country', '--state',
104
- '--company-country', '--company-state', '--company-size', '--count', '--name', '--has-phone']) {
105
- const v = flag(f)
106
- if (v === undefined) continue
107
- const key = {
108
- '--seniority': 'seniorityLevel', '--function': 'functionDept',
109
- '--industry': 'companyIndustry', '--country': 'personCountry',
110
- '--state': 'personState', '--company-country': 'companyCountry',
111
- '--company-state': 'companyState', '--company-size': 'companySize',
112
- '--count': 'count', '--name': 'fileName', '--has-phone': 'hasPhone'
113
- }[f]
114
- filters[key] = f === '--has-phone' ? true : (f === '--count' ? +v : v)
115
- }
116
- // Array flags
117
- for (const f of ['--titles', '--domains', '--keywords', '--person-cities', '--company-cities']) {
118
- const v = flag(f)
119
- if (!v) continue
120
- const key = { '--titles': 'personTitles', '--domains': 'companyDomains',
121
- '--keywords': 'companyKeywords', '--person-cities': 'personCities',
122
- '--company-cities': 'companyCities' }[f]
123
- filters[key] = v.split(',').map(s => s.trim())
124
- }
125
- if (!Object.keys(filters).length) die('At least one filter required. Example: scrapercity apollo-filters --industry "computer software" --country "United States" --count 1000')
126
- const r = await sc.apolloFilters(filters)
127
- console.log(`✓ Apollo filter search started`)
128
- console.log(` Run ID: ${r.runId}`)
129
- console.log(` ${r.message || ''}`)
130
- console.log(` Note: Apollo takes up to 4 days. Set up a webhook to get notified.`)
131
- break
132
- }
133
-
134
100
  // ── Maps ──────────────────────────────────────────────
135
101
  case 'maps': {
136
102
  const query = flag('--query') || flag('-q')
@@ -300,21 +266,6 @@ async function main() {
300
266
  break
301
267
  }
302
268
 
303
- // ── YouTube Email ─────────────────────────────────────
304
- case 'youtube-email': {
305
- let channels = args.filter(a => !a.startsWith('-'))
306
- const file = flag('--file')
307
- if (file) {
308
- channels = [...channels, ...fs.readFileSync(file, 'utf-8').split('\n').map(l => l.trim()).filter(Boolean)]
309
- }
310
- if (!channels.length) die('Usage: scrapercity youtube-email @ChannelHandle https://youtube.com/@Channel OR --file channels.txt')
311
- const r = await sc.youtubeEmail(channels)
312
- console.log(`✓ YouTube email scrape started`)
313
- console.log(` Run ID: ${r.runId}`)
314
- console.log(` Poll: scrapercity status ${r.runId}`)
315
- break
316
- }
317
-
318
269
  // ── Website Finder ────────────────────────────────────
319
270
  case 'website-finder': {
320
271
  let domains = args.filter(a => !a.startsWith('-'))
@@ -400,17 +351,15 @@ async function main() {
400
351
  break
401
352
  }
402
353
 
403
- // ── Property Lookup ───────────────────────────────────
404
- case 'property-lookup': {
405
- let addresses = args.filter(a => !a.startsWith('-'))
406
- const file = flag('--file')
407
- const ownerContact = flagBool('--owner-contact')
408
- if (file) {
409
- addresses = [...addresses, ...fs.readFileSync(file, 'utf-8').split('\n').map(l => l.trim()).filter(Boolean)]
410
- }
411
- if (!addresses.length) die('Usage: scrapercity property-lookup "123 Main St, Denver, CO 80202" [--owner-contact] OR --file addresses.txt')
412
- const r = await sc.propertyLookup(addresses, ownerContact)
413
- console.log(`✓ Property lookup started for ${addresses.length} addresses`)
354
+ // ── Deal Finder (distressed properties) ───────────────
355
+ case 'distress-list': {
356
+ const search = args.find(a => !a.startsWith('-'))
357
+ if (!search) die('Usage: scrapercity distress-list "Tampa, FL" [--types preForeclosure,auction] [--max 100]')
358
+ const body = { search }
359
+ const types = flag('--types'); if (types) body.distressTypes = types.split(',').map(s => s.trim())
360
+ const max = flag('--max'); if (max) body.maxItems = +max
361
+ const r = await sc.distressList(body)
362
+ console.log(`✓ Deal Finder scrape started`)
414
363
  console.log(` Run ID: ${r.runId}`)
415
364
  console.log(` Poll: scrapercity status ${r.runId}`)
416
365
  break
@@ -466,7 +415,6 @@ ScraperCity CLI - B2B lead generation from your terminal
466
415
 
467
416
  Scrapers:
468
417
  scrapercity apollo <url> [--count N] Apollo scrape (URL-based, ~4 day delivery)
469
- scrapercity apollo-filters [filters] Apollo scrape (filter-based)
470
418
  scrapercity maps -q <query> -l <loc> Google Maps scrape
471
419
  scrapercity email-validate <emails> Validate email addresses
472
420
  scrapercity email-find --first X --last Y --domain Z Find business emails
@@ -476,14 +424,13 @@ ScraperCity CLI - B2B lead generation from your terminal
476
424
  scrapercity builtwith "Technology" Sites using a technology
477
425
  scrapercity criminal --name "X" Criminal records search
478
426
  scrapercity airbnb --city "Miami, FL" Airbnb host emails
479
- scrapercity youtube-email @Channel YouTuber business emails
480
427
  scrapercity website-finder acme.com Contact info from domains
481
428
  scrapercity yelp -q "query" -l "City" Yelp business scraper
482
429
  scrapercity angi -q "query" --zips X Angi (Angie's List) scraper
483
430
  scrapercity zillow-agents -l "City" Zillow real estate agents
484
431
  scrapercity bizbuysell <url> BizBuySell listings
485
432
  scrapercity crexi <url> Crexi commercial real estate
486
- scrapercity property-lookup "address" Property data + owner contact
433
+ scrapercity distress-list \"City, ST\" Distressed / motivated-seller properties
487
434
 
488
435
  Status:
489
436
  scrapercity status <runId> Check run status