n8n-nodes-apivault-yelp 0.1.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/LICENSE +21 -0
- package/README.md +72 -0
- package/dist/credentials/ApifyApi.credentials.d.ts +9 -0
- package/dist/credentials/ApifyApi.credentials.js +37 -0
- package/dist/credentials/ApifyApi.credentials.js.map +1 -0
- package/dist/nodes/Yelp/Yelp.node.d.ts +5 -0
- package/dist/nodes/Yelp/Yelp.node.js +301 -0
- package/dist/nodes/Yelp/Yelp.node.js.map +1 -0
- package/dist/nodes/Yelp/yelp.svg +9 -0
- package/index.js +3 -0
- package/package.json +55 -0
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 apivault_labs
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
ADDED
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
# n8n-nodes-apivault-yelp
|
|
2
|
+
|
|
3
|
+
An [n8n](https://n8n.io) community node for the **Yelp Business Scraper** — real-time deep intelligence on any Yelp business, no cache.
|
|
4
|
+
|
|
5
|
+
No login. Pay-as-you-go, no monthly subscription. The scraping and 12-source enrichment run server-side on [Apify](https://apify.com); this node is a thin connector you drive with your own Apify API token.
|
|
6
|
+
|
|
7
|
+
Built by **[apivault_labs](https://apify.com/apivault_labs)** — see [all our actors](https://apify.com/apivault_labs).
|
|
8
|
+
|
|
9
|
+
## What you get per business (40+ fields)
|
|
10
|
+
|
|
11
|
+
- **Core**: name, rating, reviews count, phone, address, website, hours, categories, price range, neighborhood, image, amenities
|
|
12
|
+
- **Hours intelligence**: structured weekly schedule, hours/week, weekend coverage, timezone-aware **is-open-now**
|
|
13
|
+
- **Website tech stack**: 50+ platforms (Shopify, WordPress, Wix, OpenTable, Resy, Toast, Tock, DoorDash, Stripe, Square, Klaviyo, HubSpot…), alive check, server, HSTS
|
|
14
|
+
- **Contact enrichment**: emails (CloudFlare decoder + pattern guessing), phones (E.164), social profiles (IG/FB/Twitter/TikTok/YT/LinkedIn/Pinterest), menu/booking/delivery URLs
|
|
15
|
+
- **SEO + mobile audit**, structured **amenities** (28 flags), parsed **address** + timezone
|
|
16
|
+
- **Listing age** (Wayback), optional **domain age** (crt.sh) and **geocoding**
|
|
17
|
+
- **leadScore 0-100** + tier + reasons + **bestContact** picker
|
|
18
|
+
- **Industry outreach pitch** (15 templates) + **one-click outreach links** (mailto/tel/sms/WhatsApp/LinkedIn)
|
|
19
|
+
- **Slug-fallback** keeps the actor useful even when Yelp throttles
|
|
20
|
+
|
|
21
|
+
## Installation
|
|
22
|
+
|
|
23
|
+
In your n8n instance:
|
|
24
|
+
|
|
25
|
+
1. Go to **Settings → Community Nodes**
|
|
26
|
+
2. Select **Install**
|
|
27
|
+
3. Enter `n8n-nodes-apivault-yelp`
|
|
28
|
+
4. Confirm and install
|
|
29
|
+
|
|
30
|
+
## Credentials
|
|
31
|
+
|
|
32
|
+
This node uses an **Apify API token**:
|
|
33
|
+
|
|
34
|
+
1. Create a free account at [apify.com](https://apify.com)
|
|
35
|
+
2. Go to **Apify Console → Settings → Integrations** and copy your **API token**
|
|
36
|
+
3. In n8n, create new **Apify API** credentials and paste the token
|
|
37
|
+
|
|
38
|
+
A free Apify account includes monthly usage credits.
|
|
39
|
+
|
|
40
|
+
## Usage
|
|
41
|
+
|
|
42
|
+
- **Yelp Business URLs** — one or more `https://www.yelp.com/biz/...` pages (one per line, or comma-separated)
|
|
43
|
+
- **Export Format** — default JSON / CSV (flattened, sales-ready)
|
|
44
|
+
- **Enrichment Layers** — toggle any of the 15 layers (tech stack, contacts, lead score, outreach pitch, domain age, geocoding…)
|
|
45
|
+
- **Reliability & Filters** — slug fallback, retries, exclude chains, KV summary
|
|
46
|
+
- **Advanced** — concurrency, timeout
|
|
47
|
+
|
|
48
|
+
## Pricing
|
|
49
|
+
|
|
50
|
+
Billed per business through Apify (pay-per-event): **$3 / 1,000 businesses** ($0.003 each). All enrichment included.
|
|
51
|
+
|
|
52
|
+
## Use cases
|
|
53
|
+
|
|
54
|
+
- **B2B prospecting** — score local businesses and grab contact-ready leads
|
|
55
|
+
- **Local SEO / web-agency outreach** — find tech-stack gaps and dead sites
|
|
56
|
+
- **CRM enrichment** — export CSV straight into HubSpot/Salesforce/Pipedrive
|
|
57
|
+
- **Market research** — ratings, segments and online-presence signals by area
|
|
58
|
+
|
|
59
|
+
## Resources
|
|
60
|
+
|
|
61
|
+
- [Yelp Business Scraper actor on Apify](https://apify.com/apivault_labs/yelp-business-scraper)
|
|
62
|
+
- [All actors by apivault_labs](https://apify.com/apivault_labs)
|
|
63
|
+
- Prefer Python? Use the [Python SDK](https://github.com/apivault-labs/yelp-business-analyzer-python)
|
|
64
|
+
- [n8n community nodes docs](https://docs.n8n.io/integrations/community-nodes/)
|
|
65
|
+
|
|
66
|
+
## License
|
|
67
|
+
|
|
68
|
+
[MIT](LICENSE)
|
|
69
|
+
|
|
70
|
+
## Keywords
|
|
71
|
+
|
|
72
|
+
`yelp-scraper` `yelp-business` `lead-generation` `b2b-prospecting` `local-seo` `business-intelligence` `outreach-automation` `crm-enrichment` `apollo-alternative` `n8n` `apify`
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { IAuthenticateGeneric, ICredentialTestRequest, ICredentialType, INodeProperties } from 'n8n-workflow';
|
|
2
|
+
export declare class ApifyApi implements ICredentialType {
|
|
3
|
+
name: string;
|
|
4
|
+
displayName: string;
|
|
5
|
+
documentationUrl: string;
|
|
6
|
+
properties: INodeProperties[];
|
|
7
|
+
authenticate: IAuthenticateGeneric;
|
|
8
|
+
test: ICredentialTestRequest;
|
|
9
|
+
}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ApifyApi = void 0;
|
|
4
|
+
class ApifyApi {
|
|
5
|
+
constructor() {
|
|
6
|
+
this.name = 'apifyApi';
|
|
7
|
+
this.displayName = 'Apify API';
|
|
8
|
+
this.documentationUrl = 'https://docs.apify.com/platform/integrations/api';
|
|
9
|
+
this.properties = [
|
|
10
|
+
{
|
|
11
|
+
displayName: 'API Token',
|
|
12
|
+
name: 'apiToken',
|
|
13
|
+
type: 'string',
|
|
14
|
+
typeOptions: { password: true },
|
|
15
|
+
default: '',
|
|
16
|
+
required: true,
|
|
17
|
+
description: 'Your personal Apify API token. Find it in Apify Console → Settings → Integrations → API token. A free account includes monthly usage credits.',
|
|
18
|
+
},
|
|
19
|
+
];
|
|
20
|
+
this.authenticate = {
|
|
21
|
+
type: 'generic',
|
|
22
|
+
properties: {
|
|
23
|
+
headers: {
|
|
24
|
+
Authorization: '=Bearer {{$credentials.apiToken}}',
|
|
25
|
+
},
|
|
26
|
+
},
|
|
27
|
+
};
|
|
28
|
+
this.test = {
|
|
29
|
+
request: {
|
|
30
|
+
baseURL: 'https://api.apify.com/v2',
|
|
31
|
+
url: '/users/me',
|
|
32
|
+
},
|
|
33
|
+
};
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
exports.ApifyApi = ApifyApi;
|
|
37
|
+
//# sourceMappingURL=ApifyApi.credentials.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ApifyApi.credentials.js","sourceRoot":"","sources":["../../credentials/ApifyApi.credentials.ts"],"names":[],"mappings":";;;AAOA,MAAa,QAAQ;IAArB;QACC,SAAI,GAAG,UAAU,CAAC;QAElB,gBAAW,GAAG,WAAW,CAAC;QAE1B,qBAAgB,GAAG,kDAAkD,CAAC;QAEtE,eAAU,GAAsB;YAC/B;gBACC,WAAW,EAAE,WAAW;gBACxB,IAAI,EAAE,UAAU;gBAChB,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE;gBAC/B,OAAO,EAAE,EAAE;gBACX,QAAQ,EAAE,IAAI;gBACd,WAAW,EACV,+IAA+I;aAChJ;SACD,CAAC;QAEF,iBAAY,GAAyB;YACpC,IAAI,EAAE,SAAS;YACf,UAAU,EAAE;gBACX,OAAO,EAAE;oBACR,aAAa,EAAE,mCAAmC;iBAClD;aACD;SACD,CAAC;QAEF,SAAI,GAA2B;YAC9B,OAAO,EAAE;gBACR,OAAO,EAAE,0BAA0B;gBACnC,GAAG,EAAE,WAAW;aAChB;SACD,CAAC;IACH,CAAC;CAAA;AAnCD,4BAmCC"}
|
|
@@ -0,0 +1,301 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Yelp = void 0;
|
|
4
|
+
const n8n_workflow_1 = require("n8n-workflow");
|
|
5
|
+
const ACTOR_ID = 'apivault_labs~yelp-business-scraper';
|
|
6
|
+
class Yelp {
|
|
7
|
+
constructor() {
|
|
8
|
+
this.description = {
|
|
9
|
+
displayName: 'Yelp Business Scraper',
|
|
10
|
+
name: 'yelp',
|
|
11
|
+
icon: 'file:yelp.svg',
|
|
12
|
+
group: ['transform'],
|
|
13
|
+
version: 1,
|
|
14
|
+
subtitle: '={{$parameter["businessUrls"]}}',
|
|
15
|
+
description: 'Real-time deep intelligence on any Yelp business: ratings, hours, website tech stack, emails, phones, social profiles, SEO audit, lead score and outreach pitch.',
|
|
16
|
+
defaults: {
|
|
17
|
+
name: 'Yelp Business Scraper',
|
|
18
|
+
},
|
|
19
|
+
inputs: [n8n_workflow_1.NodeConnectionTypes.Main],
|
|
20
|
+
outputs: [n8n_workflow_1.NodeConnectionTypes.Main],
|
|
21
|
+
usableAsTool: true,
|
|
22
|
+
credentials: [
|
|
23
|
+
{
|
|
24
|
+
name: 'apifyApi',
|
|
25
|
+
required: true,
|
|
26
|
+
},
|
|
27
|
+
],
|
|
28
|
+
properties: [
|
|
29
|
+
{
|
|
30
|
+
displayName: 'Yelp Business URLs',
|
|
31
|
+
name: 'businessUrls',
|
|
32
|
+
type: 'string',
|
|
33
|
+
typeOptions: { rows: 3 },
|
|
34
|
+
default: '',
|
|
35
|
+
required: true,
|
|
36
|
+
placeholder: 'https://www.yelp.com/biz/tartine-bakery-san-francisco',
|
|
37
|
+
description: 'One or more Yelp business page URLs. Separate multiple URLs with a new line or comma.',
|
|
38
|
+
},
|
|
39
|
+
{
|
|
40
|
+
displayName: 'Export Format',
|
|
41
|
+
name: 'exportFormat',
|
|
42
|
+
type: 'options',
|
|
43
|
+
options: [
|
|
44
|
+
{ name: 'Default JSON (all fields)', value: 'default' },
|
|
45
|
+
{ name: 'CSV (flattened, sales-ready)', value: 'csv' },
|
|
46
|
+
],
|
|
47
|
+
default: 'default',
|
|
48
|
+
description: 'Shape of each business record',
|
|
49
|
+
},
|
|
50
|
+
{
|
|
51
|
+
displayName: 'Enrichment Layers',
|
|
52
|
+
name: 'enrichment',
|
|
53
|
+
type: 'collection',
|
|
54
|
+
placeholder: 'Add Enrichment Layer',
|
|
55
|
+
default: {},
|
|
56
|
+
description: 'Toggle the enrichment layers. All on-by-default layers run unless disabled here.',
|
|
57
|
+
options: [
|
|
58
|
+
{
|
|
59
|
+
displayName: 'Core Fields',
|
|
60
|
+
name: 'extractCore',
|
|
61
|
+
type: 'boolean',
|
|
62
|
+
default: true,
|
|
63
|
+
description: 'Whether to extract name, rating, reviews, phone, address, website, hours, categories, price range, neighborhood, image, amenities',
|
|
64
|
+
},
|
|
65
|
+
{
|
|
66
|
+
displayName: 'Hours Intelligence',
|
|
67
|
+
name: 'extractHoursIntel',
|
|
68
|
+
type: 'boolean',
|
|
69
|
+
default: true,
|
|
70
|
+
description: 'Whether to extract structured weekly schedule, hours/week, days open, weekend coverage, real-time is-open-now',
|
|
71
|
+
},
|
|
72
|
+
{
|
|
73
|
+
displayName: 'Website Tech Stack',
|
|
74
|
+
name: 'extractWebsite',
|
|
75
|
+
type: 'boolean',
|
|
76
|
+
default: true,
|
|
77
|
+
description: 'Whether to detect 50+ platforms (Shopify/WP/Wix/OpenTable/Toast/Stripe/Square…), alive check, server, HSTS, SEO + mobile audit',
|
|
78
|
+
},
|
|
79
|
+
{
|
|
80
|
+
displayName: 'Website Discovery Fallback (DuckDuckGo)',
|
|
81
|
+
name: 'websiteDiscoveryFallback',
|
|
82
|
+
type: 'boolean',
|
|
83
|
+
default: true,
|
|
84
|
+
description: 'Whether to search DuckDuckGo for the official site when Yelp hides the website field. Adds ~2s per business; recovers ~70% of hidden URLs.',
|
|
85
|
+
},
|
|
86
|
+
{
|
|
87
|
+
displayName: 'Contact Enrichment (Emails, Phones, Socials)',
|
|
88
|
+
name: 'extractContactEnrichment',
|
|
89
|
+
type: 'boolean',
|
|
90
|
+
default: true,
|
|
91
|
+
description: 'Whether to extract emails (CloudFlare decoder), phones (E.164), social profiles (IG/FB/Twitter/TikTok/YT/LinkedIn/Pinterest) and menu/booking/delivery URLs from the website',
|
|
92
|
+
},
|
|
93
|
+
{
|
|
94
|
+
displayName: 'Structured Amenities',
|
|
95
|
+
name: 'extractAmenities',
|
|
96
|
+
type: 'boolean',
|
|
97
|
+
default: true,
|
|
98
|
+
description: 'Whether to parse free-text amenities into 28 boolean flags (outdoor seating, reservations, delivery, wifi, wheelchair, vegan, dog-friendly…)',
|
|
99
|
+
},
|
|
100
|
+
{
|
|
101
|
+
displayName: 'Listing Age (Wayback)',
|
|
102
|
+
name: 'extractAge',
|
|
103
|
+
type: 'boolean',
|
|
104
|
+
default: true,
|
|
105
|
+
description: 'Whether to derive years on Yelp from the earliest Wayback snapshot',
|
|
106
|
+
},
|
|
107
|
+
{
|
|
108
|
+
displayName: 'Parse Address (Street/City/State/Zip)',
|
|
109
|
+
name: 'extractAddressParts',
|
|
110
|
+
type: 'boolean',
|
|
111
|
+
default: true,
|
|
112
|
+
description: 'Whether to split the address into structured fields and derive timezone for accurate is-open-now',
|
|
113
|
+
},
|
|
114
|
+
{
|
|
115
|
+
displayName: 'Guess Common Email Patterns',
|
|
116
|
+
name: 'guessEmailPatterns',
|
|
117
|
+
type: 'boolean',
|
|
118
|
+
default: true,
|
|
119
|
+
description: 'Whether to generate likely contact addresses (info@, hello@, contact@…) when no email is extractable. Returned as emails_guessed[]; verify before sending.',
|
|
120
|
+
},
|
|
121
|
+
{
|
|
122
|
+
displayName: 'Derived Signals',
|
|
123
|
+
name: 'extractDerivedSignals',
|
|
124
|
+
type: 'boolean',
|
|
125
|
+
default: true,
|
|
126
|
+
description: 'Whether to compute popularity_score, customer_segment, quality_tier, online_presence_score, chain_likelihood_score',
|
|
127
|
+
},
|
|
128
|
+
{
|
|
129
|
+
displayName: 'Lead Score + Best Contact',
|
|
130
|
+
name: 'extractLeadScore',
|
|
131
|
+
type: 'boolean',
|
|
132
|
+
default: true,
|
|
133
|
+
description: 'Whether to compute a B2B prospecting score (0-100) with reasons, lead tier and bestContact picker',
|
|
134
|
+
},
|
|
135
|
+
{
|
|
136
|
+
displayName: 'Industry Outreach Pitch',
|
|
137
|
+
name: 'extractOutreachPitch',
|
|
138
|
+
type: 'boolean',
|
|
139
|
+
default: true,
|
|
140
|
+
description: 'Whether to write a ready-to-paste cold-outreach message tailored to the business category (15 industry templates)',
|
|
141
|
+
},
|
|
142
|
+
{
|
|
143
|
+
displayName: 'One-Click Outreach Links',
|
|
144
|
+
name: 'extractOutreachLinks',
|
|
145
|
+
type: 'boolean',
|
|
146
|
+
default: true,
|
|
147
|
+
description: 'Whether to build mailto/tel/sms/WhatsApp/LinkedIn/Google/Yelp-competitors URLs ready for CRM use',
|
|
148
|
+
},
|
|
149
|
+
{
|
|
150
|
+
displayName: 'Website Domain Age (crt.sh SSL History)',
|
|
151
|
+
name: 'extractDomainAge',
|
|
152
|
+
type: 'boolean',
|
|
153
|
+
default: false,
|
|
154
|
+
description: 'Whether to derive website_domain_age_years from earliest SSL cert. Adds ~10-30s per business — off by default.',
|
|
155
|
+
},
|
|
156
|
+
{
|
|
157
|
+
displayName: 'Geocoding (lat/lng via Nominatim)',
|
|
158
|
+
name: 'extractGeocoding',
|
|
159
|
+
type: 'boolean',
|
|
160
|
+
default: false,
|
|
161
|
+
description: 'Whether to resolve the address to lat/lng. Off by default — Nominatim is rate-limited (~1 req/sec).',
|
|
162
|
+
},
|
|
163
|
+
],
|
|
164
|
+
},
|
|
165
|
+
{
|
|
166
|
+
displayName: 'Reliability & Filters',
|
|
167
|
+
name: 'reliability',
|
|
168
|
+
type: 'collection',
|
|
169
|
+
placeholder: 'Add Option',
|
|
170
|
+
default: {},
|
|
171
|
+
options: [
|
|
172
|
+
{
|
|
173
|
+
displayName: 'Slug-Derived Fallback on Failure',
|
|
174
|
+
name: 'slugFallbackOnFail',
|
|
175
|
+
type: 'boolean',
|
|
176
|
+
default: true,
|
|
177
|
+
description: 'Whether to recover business name + city from the URL slug and run enrichment anyway when Yelp throttles. Recovers ~60% of failed runs into partial-but-useful records.',
|
|
178
|
+
},
|
|
179
|
+
{
|
|
180
|
+
displayName: 'Retries on Transient Block',
|
|
181
|
+
name: 'maxRetries',
|
|
182
|
+
type: 'number',
|
|
183
|
+
typeOptions: { minValue: 0, maxValue: 5 },
|
|
184
|
+
default: 2,
|
|
185
|
+
description: 'Retries with linear backoff (8s, 16s) when Yelp throttles',
|
|
186
|
+
},
|
|
187
|
+
{
|
|
188
|
+
displayName: 'Exclude Chains / Franchises',
|
|
189
|
+
name: 'excludeChains',
|
|
190
|
+
type: 'boolean',
|
|
191
|
+
default: false,
|
|
192
|
+
description: 'Whether to skip businesses with chain_likelihood_score ≥ 50 (Starbucks, McDonald\'s…). Useful when prospecting independent SMBs only.',
|
|
193
|
+
},
|
|
194
|
+
{
|
|
195
|
+
displayName: 'Write Aggregate Summary to KV Store',
|
|
196
|
+
name: 'writeSummary',
|
|
197
|
+
type: 'boolean',
|
|
198
|
+
default: true,
|
|
199
|
+
description: 'Whether to write a SUMMARY record (avg metrics, segment distribution, top tech) to the KV store on multi-business runs. Free — not added to dataset.',
|
|
200
|
+
},
|
|
201
|
+
],
|
|
202
|
+
},
|
|
203
|
+
{
|
|
204
|
+
displayName: 'Advanced Options',
|
|
205
|
+
name: 'advancedOptions',
|
|
206
|
+
type: 'collection',
|
|
207
|
+
placeholder: 'Add Option',
|
|
208
|
+
default: {},
|
|
209
|
+
options: [
|
|
210
|
+
{
|
|
211
|
+
displayName: 'Max Concurrency',
|
|
212
|
+
name: 'maxConcurrency',
|
|
213
|
+
type: 'number',
|
|
214
|
+
typeOptions: { minValue: 1, maxValue: 5 },
|
|
215
|
+
default: 2,
|
|
216
|
+
description: 'Parallel businesses to analyze',
|
|
217
|
+
},
|
|
218
|
+
{
|
|
219
|
+
displayName: 'Timeout per Business (Seconds)',
|
|
220
|
+
name: 'timeout',
|
|
221
|
+
type: 'number',
|
|
222
|
+
typeOptions: { minValue: 60, maxValue: 300 },
|
|
223
|
+
default: 180,
|
|
224
|
+
description: 'Max wait time per business',
|
|
225
|
+
},
|
|
226
|
+
],
|
|
227
|
+
},
|
|
228
|
+
],
|
|
229
|
+
};
|
|
230
|
+
}
|
|
231
|
+
async execute() {
|
|
232
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u, _v, _w;
|
|
233
|
+
const items = this.getInputData();
|
|
234
|
+
const returnData = [];
|
|
235
|
+
for (let i = 0; i < items.length; i++) {
|
|
236
|
+
try {
|
|
237
|
+
const rawUrls = this.getNodeParameter('businessUrls', i);
|
|
238
|
+
const businessUrls = rawUrls
|
|
239
|
+
.split(/[\n,]+/)
|
|
240
|
+
.map((u) => u.trim())
|
|
241
|
+
.filter((u) => u.length > 0);
|
|
242
|
+
if (businessUrls.length === 0) {
|
|
243
|
+
throw new n8n_workflow_1.NodeOperationError(this.getNode(), 'At least one Yelp business URL is required', { itemIndex: i });
|
|
244
|
+
}
|
|
245
|
+
const exportFormat = this.getNodeParameter('exportFormat', i, 'default');
|
|
246
|
+
const enrichment = this.getNodeParameter('enrichment', i, {});
|
|
247
|
+
const reliability = this.getNodeParameter('reliability', i, {});
|
|
248
|
+
const advanced = this.getNodeParameter('advancedOptions', i, {});
|
|
249
|
+
const body = {
|
|
250
|
+
businessUrls,
|
|
251
|
+
exportFormat,
|
|
252
|
+
extractCore: (_a = enrichment.extractCore) !== null && _a !== void 0 ? _a : true,
|
|
253
|
+
extractHoursIntel: (_b = enrichment.extractHoursIntel) !== null && _b !== void 0 ? _b : true,
|
|
254
|
+
extractWebsite: (_c = enrichment.extractWebsite) !== null && _c !== void 0 ? _c : true,
|
|
255
|
+
websiteDiscoveryFallback: (_d = enrichment.websiteDiscoveryFallback) !== null && _d !== void 0 ? _d : true,
|
|
256
|
+
extractContactEnrichment: (_e = enrichment.extractContactEnrichment) !== null && _e !== void 0 ? _e : true,
|
|
257
|
+
extractAmenities: (_f = enrichment.extractAmenities) !== null && _f !== void 0 ? _f : true,
|
|
258
|
+
extractAge: (_g = enrichment.extractAge) !== null && _g !== void 0 ? _g : true,
|
|
259
|
+
extractAddressParts: (_h = enrichment.extractAddressParts) !== null && _h !== void 0 ? _h : true,
|
|
260
|
+
guessEmailPatterns: (_j = enrichment.guessEmailPatterns) !== null && _j !== void 0 ? _j : true,
|
|
261
|
+
extractDerivedSignals: (_k = enrichment.extractDerivedSignals) !== null && _k !== void 0 ? _k : true,
|
|
262
|
+
extractLeadScore: (_l = enrichment.extractLeadScore) !== null && _l !== void 0 ? _l : true,
|
|
263
|
+
extractOutreachPitch: (_m = enrichment.extractOutreachPitch) !== null && _m !== void 0 ? _m : true,
|
|
264
|
+
extractOutreachLinks: (_o = enrichment.extractOutreachLinks) !== null && _o !== void 0 ? _o : true,
|
|
265
|
+
extractDomainAge: (_p = enrichment.extractDomainAge) !== null && _p !== void 0 ? _p : false,
|
|
266
|
+
extractGeocoding: (_q = enrichment.extractGeocoding) !== null && _q !== void 0 ? _q : false,
|
|
267
|
+
slugFallbackOnFail: (_r = reliability.slugFallbackOnFail) !== null && _r !== void 0 ? _r : true,
|
|
268
|
+
maxRetries: (_s = reliability.maxRetries) !== null && _s !== void 0 ? _s : 2,
|
|
269
|
+
excludeChains: (_t = reliability.excludeChains) !== null && _t !== void 0 ? _t : false,
|
|
270
|
+
writeSummary: (_u = reliability.writeSummary) !== null && _u !== void 0 ? _u : true,
|
|
271
|
+
maxConcurrency: (_v = advanced.maxConcurrency) !== null && _v !== void 0 ? _v : 2,
|
|
272
|
+
timeout: (_w = advanced.timeout) !== null && _w !== void 0 ? _w : 180,
|
|
273
|
+
};
|
|
274
|
+
const options = {
|
|
275
|
+
method: 'POST',
|
|
276
|
+
url: `https://api.apify.com/v2/acts/${ACTOR_ID}/run-sync-get-dataset-items`,
|
|
277
|
+
body,
|
|
278
|
+
json: true,
|
|
279
|
+
};
|
|
280
|
+
const response = await this.helpers.requestWithAuthentication.call(this, 'apifyApi', options);
|
|
281
|
+
const results = Array.isArray(response) ? response : [response];
|
|
282
|
+
for (const result of results) {
|
|
283
|
+
returnData.push({ json: result, pairedItem: { item: i } });
|
|
284
|
+
}
|
|
285
|
+
}
|
|
286
|
+
catch (error) {
|
|
287
|
+
if (this.continueOnFail()) {
|
|
288
|
+
returnData.push({
|
|
289
|
+
json: { error: error.message },
|
|
290
|
+
pairedItem: { item: i },
|
|
291
|
+
});
|
|
292
|
+
continue;
|
|
293
|
+
}
|
|
294
|
+
throw new n8n_workflow_1.NodeOperationError(this.getNode(), error, { itemIndex: i });
|
|
295
|
+
}
|
|
296
|
+
}
|
|
297
|
+
return [returnData];
|
|
298
|
+
}
|
|
299
|
+
}
|
|
300
|
+
exports.Yelp = Yelp;
|
|
301
|
+
//# sourceMappingURL=Yelp.node.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Yelp.node.js","sourceRoot":"","sources":["../../../nodes/Yelp/Yelp.node.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" width="64" height="64">
|
|
2
|
+
<rect width="64" height="64" rx="12" fill="#D32323"/>
|
|
3
|
+
<g fill="#fff">
|
|
4
|
+
<path d="M30 16c0-1.6 1.5-2.8 3-2.3l5.5 1.8c1.3.4 2 1.8 1.6 3.1l-3.4 10.4c-.7 2.1-3.6 2-4.2-.1L30 18.5V16z"/>
|
|
5
|
+
<path d="M27 30.5c1.5.7 1.6 2.8.2 3.7l-5 3.2c-1.4.9-3.2-.2-3-1.9l.6-5.9c.2-1.7 2-2.6 3.5-1.8l3.7 2.7z"/>
|
|
6
|
+
<path d="M27.5 38.6c1.6-.4 3 1.1 2.5 2.7l-1.9 5.6c-.5 1.6-2.6 1.9-3.5.5l-3.2-4.9c-.9-1.4 0-3.3 1.7-3.4l4.4-.5z"/>
|
|
7
|
+
<path d="M34.5 38.4c-1.4-.8-1.2-2.9.3-3.5l5.6-2.2c1.6-.6 3.2.8 2.7 2.4l-1.7 5.5c-.5 1.7-2.6 2.1-3.6.6l-3.3-2.8z"/>
|
|
8
|
+
</g>
|
|
9
|
+
</svg>
|
package/index.js
ADDED
package/package.json
ADDED
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "n8n-nodes-apivault-yelp",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"description": "n8n community node for Yelp Business Scraper — real-time data, no cache. Deep intelligence on any Yelp business: ratings, weekly hours with is-open-now, website tech stack (50+ platforms), emails (CloudFlare decoder + pattern guessing), phones E.164, social profiles, SEO + mobile audit, parsed address, lead score 0-100 + industry outreach pitch + one-click outreach links. CSV export. No login. Pay-as-you-go, no monthly fee.",
|
|
5
|
+
"license": "MIT",
|
|
6
|
+
"homepage": "https://apify.com/apivault_labs/yelp-business-scraper",
|
|
7
|
+
"keywords": [
|
|
8
|
+
"n8n-community-node-package",
|
|
9
|
+
"n8n",
|
|
10
|
+
"yelp-scraper",
|
|
11
|
+
"yelp-business",
|
|
12
|
+
"lead-generation",
|
|
13
|
+
"b2b-prospecting",
|
|
14
|
+
"local-seo",
|
|
15
|
+
"business-intelligence",
|
|
16
|
+
"outreach-automation",
|
|
17
|
+
"crm-enrichment",
|
|
18
|
+
"apollo-alternative",
|
|
19
|
+
"apify"
|
|
20
|
+
],
|
|
21
|
+
"author": {
|
|
22
|
+
"name": "apivault_labs"
|
|
23
|
+
},
|
|
24
|
+
"repository": {
|
|
25
|
+
"type": "git",
|
|
26
|
+
"url": "https://github.com/apivault-labs/n8n-nodes-apivault-yelp.git"
|
|
27
|
+
},
|
|
28
|
+
"main": "index.js",
|
|
29
|
+
"scripts": {
|
|
30
|
+
"build": "tsc && copyfiles \"nodes/**/*.svg\" dist",
|
|
31
|
+
"dev": "tsc --watch",
|
|
32
|
+
"prepublishOnly": "npm run build"
|
|
33
|
+
},
|
|
34
|
+
"files": [
|
|
35
|
+
"dist"
|
|
36
|
+
],
|
|
37
|
+
"n8n": {
|
|
38
|
+
"n8nNodesApiVersion": 1,
|
|
39
|
+
"credentials": [
|
|
40
|
+
"dist/credentials/ApifyApi.credentials.js"
|
|
41
|
+
],
|
|
42
|
+
"nodes": [
|
|
43
|
+
"dist/nodes/Yelp/Yelp.node.js"
|
|
44
|
+
]
|
|
45
|
+
},
|
|
46
|
+
"devDependencies": {
|
|
47
|
+
"@types/node": "^20.10.0",
|
|
48
|
+
"copyfiles": "^2.4.1",
|
|
49
|
+
"n8n-workflow": "*",
|
|
50
|
+
"typescript": "^5.4.0"
|
|
51
|
+
},
|
|
52
|
+
"peerDependencies": {
|
|
53
|
+
"n8n-workflow": "*"
|
|
54
|
+
}
|
|
55
|
+
}
|