n8n-nodes-crawlora 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 ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Crawlora
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-crawlora
2
+
3
+ An [n8n](https://n8n.io) community node for [Crawlora](https://crawlora.net) — get structured web
4
+ data from the public web (search, maps, e‑commerce, social, finance, page content, and more) without
5
+ maintaining your own parsers.
6
+
7
+ This node exposes the Crawlora API as n8n **Resources** (one per data source — Web, Google, Amazon,
8
+ YouTube, Maps, Finance, …) and **Operations** (the endpoints under each). It is generated from the
9
+ Crawlora OpenAPI spec, so it stays in sync with the API.
10
+
11
+ ## Installation
12
+
13
+ In n8n: **Settings → Community Nodes → Install**, then enter `n8n-nodes-crawlora`.
14
+
15
+ (Self-hosted manual install and local development are covered under "Development" below.)
16
+
17
+ ## Credentials
18
+
19
+ Create a **Crawlora API** credential and paste your API key. It is sent as the `x-api-key` header on
20
+ every request. Get a key from your [Crawlora dashboard](https://crawlora.net/app/api-keys) — new
21
+ accounts include a free monthly credit allowance, no card required.
22
+
23
+ ## Usage
24
+
25
+ 1. Add the **Crawlora** node to a workflow.
26
+ 2. Pick a **Resource** (the data source) and an **Operation** (the endpoint).
27
+ 3. Fill in the fields and run.
28
+
29
+ The node is also **usable as a tool** inside the n8n **AI Agent**, so an agent can call Crawlora
30
+ operations directly.
31
+
32
+ > Prefer MCP? Crawlora also ships a hosted MCP server with the full catalog — use n8n's **MCP Client**
33
+ > node to call every Crawlora tool from an AI Agent workflow. See https://docs.crawlora.net.
34
+
35
+ ## Development
36
+
37
+ The node's properties are **generated at build time** from the Crawlora OpenAPI spec and committed as
38
+ `nodes/Crawlora/properties.json`, so the published package has **no runtime dependencies**.
39
+
40
+ ```bash
41
+ npm install
42
+ SWAGGER_PATH=<file-or-url> npm run gen # regenerate properties.json from the Crawlora API spec
43
+ npm run build # tsc + copy assets into dist/
44
+ npm run smoke # load the built node and print resource/operation counts
45
+ ```
46
+
47
+ `npm run gen` loads the Crawlora OpenAPI/Swagger spec from `SWAGGER_PATH` (a file path or URL),
48
+ converts it to OpenAPI 3.0, drops internal/account endpoints, and rebuilds the node properties.
49
+
50
+ ## Publishing
51
+
52
+ CI builds and smoke-tests on every push/PR. To release, push a `v*` tag — the **Publish** workflow
53
+ publishes to npm with [provenance](https://docs.npmjs.com/generating-provenance-statements) (required
54
+ for n8n community-node verification since 2026-05-01):
55
+
56
+ ```bash
57
+ npm version <patch|minor> # creates the v* tag
58
+ git push --follow-tags
59
+ ```
60
+
61
+ One-time: add an automation npm token as the `NPM_TOKEN` repository secret. Lint the package against
62
+ n8n's guidelines with `npx @n8n/scan-community-package .`, then submit it for the verified badge per
63
+ the [n8n community-node docs](https://docs.n8n.io/integrations/creating-nodes/deploy/submit-community-nodes/).
64
+
65
+ ## Links
66
+
67
+ - API documentation: https://docs.crawlora.net
68
+ - Crawlora: https://crawlora.net
69
+
70
+ ## License
71
+
72
+ [MIT](./LICENSE)
@@ -0,0 +1,9 @@
1
+ import { IAuthenticateGeneric, ICredentialTestRequest, ICredentialType, INodeProperties } from 'n8n-workflow';
2
+ export declare class CrawloraApi implements ICredentialType {
3
+ name: string;
4
+ displayName: string;
5
+ documentationUrl: string;
6
+ properties: INodeProperties[];
7
+ authenticate: IAuthenticateGeneric;
8
+ test: ICredentialTestRequest;
9
+ }
@@ -0,0 +1,39 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.CrawloraApi = void 0;
4
+ class CrawloraApi {
5
+ constructor() {
6
+ this.name = 'crawloraApi';
7
+ this.displayName = 'Crawlora API';
8
+ this.documentationUrl = 'https://docs.crawlora.net';
9
+ this.properties = [
10
+ {
11
+ displayName: 'API Key',
12
+ name: 'apiKey',
13
+ type: 'string',
14
+ typeOptions: { password: true },
15
+ default: '',
16
+ required: true,
17
+ description: 'Your Crawlora API key. Find it at https://crawlora.net/app/api-keys (new accounts include a free monthly credit allowance).',
18
+ },
19
+ ];
20
+ // Crawlora authenticates with the x-api-key header (not a Bearer token).
21
+ this.authenticate = {
22
+ type: 'generic',
23
+ properties: {
24
+ headers: {
25
+ 'x-api-key': '={{$credentials.apiKey}}',
26
+ },
27
+ },
28
+ };
29
+ // Cheap, key-only request to validate the credential.
30
+ this.test = {
31
+ request: {
32
+ baseURL: 'https://api.crawlora.net/api/v1',
33
+ url: '/google/suggest',
34
+ qs: { q: 'crawlora' },
35
+ },
36
+ };
37
+ }
38
+ }
39
+ exports.CrawloraApi = CrawloraApi;
@@ -0,0 +1,4 @@
1
+ import { INodeType, INodeTypeDescription } from 'n8n-workflow';
2
+ export declare class Crawlora implements INodeType {
3
+ description: INodeTypeDescription;
4
+ }
@@ -0,0 +1,47 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.Crawlora = void 0;
7
+ const n8n_workflow_1 = require("n8n-workflow");
8
+ // Properties are GENERATED AT BUILD TIME from the Crawlora OpenAPI spec
9
+ // (`npm run gen`) and committed as properties.json, so the published node has
10
+ // NO runtime dependencies (an n8n verification requirement). Re-run `npm run gen`
11
+ // whenever the API changes to keep the node in sync.
12
+ const properties_json_1 = __importDefault(require("./properties.json"));
13
+ class Crawlora {
14
+ constructor() {
15
+ this.description = {
16
+ displayName: 'Crawlora',
17
+ name: 'crawlora',
18
+ icon: 'file:crawlora.svg',
19
+ group: ['transform'],
20
+ version: 1,
21
+ subtitle: '={{$parameter["operation"] + ": " + $parameter["resource"]}}',
22
+ description: 'Get structured web data from the public web via the Crawlora API',
23
+ defaults: {
24
+ name: 'Crawlora',
25
+ },
26
+ // Make the node usable as a tool inside the n8n AI Agent.
27
+ usableAsTool: true,
28
+ inputs: [n8n_workflow_1.NodeConnectionTypes.Main],
29
+ outputs: [n8n_workflow_1.NodeConnectionTypes.Main],
30
+ credentials: [
31
+ {
32
+ name: 'crawloraApi',
33
+ required: true,
34
+ },
35
+ ],
36
+ requestDefaults: {
37
+ headers: {
38
+ Accept: 'application/json',
39
+ 'Content-Type': 'application/json',
40
+ },
41
+ baseURL: 'https://api.crawlora.net/api/v1',
42
+ },
43
+ properties: properties_json_1.default,
44
+ };
45
+ }
46
+ }
47
+ exports.Crawlora = Crawlora;
@@ -0,0 +1,5 @@
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="14" fill="#0B5FFF"/>
3
+ <path d="M41 24.5a12 12 0 1 0 0 15" fill="none" stroke="#fff" stroke-width="5" stroke-linecap="round"/>
4
+ <circle cx="44" cy="32" r="4" fill="#fff"/>
5
+ </svg>