From dda612272dbb85fbf0a02e034615b5e382a7fe55 Mon Sep 17 00:00:00 2001 From: GTFalcao Date: Fri, 16 May 2025 00:15:03 -0300 Subject: [PATCH 01/16] pnpm --- pnpm-lock.yaml | 17 +++++++---------- 1 file changed, 7 insertions(+), 10 deletions(-) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 265297b272cae..33741811625b3 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -2143,8 +2143,7 @@ importers: specifier: ^1.5.1 version: 1.6.6 - components/cerebras: - specifiers: {} + components/cerebras: {} components/certifier: dependencies: @@ -8561,8 +8560,7 @@ importers: specifier: ^1.5.1 version: 1.6.6 - components/neon_postgres: - specifiers: {} + components/neon_postgres: {} components/nerv: {} @@ -9598,8 +9596,7 @@ importers: specifier: ^3.0.3 version: 3.0.3 - components/pdforge: - specifiers: {} + components/pdforge: {} components/peach: dependencies: @@ -10876,8 +10873,7 @@ importers: components/renderform: {} - components/rendi: - specifiers: {} + components/rendi: {} components/rentcast: dependencies: @@ -11434,8 +11430,7 @@ importers: components/scrapein_: {} - components/scrapeless: - specifiers: {} + components/scrapeless: {} components/scrapeninja: dependencies: @@ -35649,6 +35644,8 @@ snapshots: '@putout/operator-filesystem': 5.0.0(putout@36.13.1(eslint@8.57.1)(typescript@5.6.3)) '@putout/operator-json': 2.2.0 putout: 36.13.1(eslint@8.57.1)(typescript@5.6.3) + transitivePeerDependencies: + - supports-color '@putout/operator-regexp@1.0.0(putout@36.13.1(eslint@8.57.1)(typescript@5.6.3))': dependencies: From 7c71e962672f99bb602b35c26d59d655bcea2c8b Mon Sep 17 00:00:00 2001 From: GTFalcao Date: Sun, 18 May 2025 22:08:48 -0300 Subject: [PATCH 02/16] Get Backlink Summary --- .../get-backlink-summary.mjs | 130 ++++++++++++++++++ components/dataforseo/package.json | 2 +- 2 files changed, 131 insertions(+), 1 deletion(-) create mode 100644 components/dataforseo/actions/get-backlink-summary/get-backlink-summary.mjs diff --git a/components/dataforseo/actions/get-backlink-summary/get-backlink-summary.mjs b/components/dataforseo/actions/get-backlink-summary/get-backlink-summary.mjs new file mode 100644 index 0000000000000..1a5d706fe221a --- /dev/null +++ b/components/dataforseo/actions/get-backlink-summary/get-backlink-summary.mjs @@ -0,0 +1,130 @@ +import app from "../../dataforseo.app.mjs"; + +export default { + key: "dataforseo-get-backlink-summary", + name: "Get Backlink Summary", + description: + "Get an overview of backlinks data available for a given domain, subdomain, or webpage. [See the documentation](https://docs.dataforseo.com/v3/business_data/business_listings/search/live/?bash)", + version: "0.0.1", + type: "action", + methods: { + getBacklinkSummary(args = {}) { + return this._makeRequest({ + path: "/backlinks/summary/live", + method: "post", + ...args, + }); + }, + }, + props: { + app, + target: { + type: "string", + label: "Target", + description: + "Domain, subdomain or webpage to get data for. A domain or a subdomain should be specified without `https://` and `www`. A page should be specified with absolute URL (including `http://` or `https://`", + }, + includeSubdomains: { + type: "boolean", + label: "Include Subdomains", + description: + "Whether the subdomains of the `target` will be included in the search. Default is `true`", + optional: true, + }, + includeIndirectLinks: { + type: "boolean", + label: "Include Indirect Links", + description: + "Whether indirect links to the target will be included in the results. Default is `true`", + optional: true, + }, + excludeInternalBacklinks: { + type: "boolean", + label: "Exclude Internal Backlinks", + description: + "Indicates if internal backlinks from subdomains to the target will be excluded from the results. Default is `true`", + optional: true, + }, + internalListLimit: { + type: "integer", + label: "Internal List Limit", + description: + "Maximum number of elements within internal arrays. [See the documentation](https://docs.dataforseo.com/v3/backlinks/summary/live/?bash#internal_list_limit) for more information", + default: 10, + max: 1000, + optional: true, + }, + backlinksStatusType: { + type: "string", + label: "Include Indirect Links", + description: + "You can use this field to choose what backlinks will be returned and used for aggregated metrics for your target", + optional: true, + options: [ + { + value: "all", + label: "All backlinks will be returned and counted", + }, + { + value: "live", + label: + "Backlinks found during the last check will be returned and counted", + }, + { + value: "lost", + label: "Lost backlinks will be returned and counted", + }, + ], + default: "live", + }, + backlinksFilters: { + type: "string[]", + label: "Backlinks Filters", + description: + "You can use this field to filter the initial backlinks that will be included in the dataset for aggregated metrics for your target. [See the documentation](https://docs.dataforseo.com/v3/backlinks/summary/live/?bash#backlinks_filters) for more information. Example: `[\"dofollow\", \"=\", true]`", + optional: true, + }, + rankScale: { + type: "string", + label: "Rank Scale", + description: + "Whether rank values are presented on a 0-100 or 0-1000 scale", + optional: true, + options: [ + "one_hundred", + "one_thousand", + ], + default: "one_thousand", + }, + tag: { + type: "string", + label: "Tag", + description: + "You can use this parameter to identify the task and match it with the result.", + optional: true, + }, + }, + async run({ $ }) { + const response = await this.getBacklinkSummary({ + $, + data: [ + { + target: this.target, + include_subdomains: this.includeSubdomains, + include_indirect_links: this.includeIndirectLinks, + exclude_internal_backlinks: this.excludeInternalBacklinks, + internal_list_limit: this.internalListLimit, + backlinks_status_type: this.backlinksStatusType, + backlinks_filters: this.backlinksFilters, + rank_scale: this.rankScale, + tag: this.tag, + }, + ], + }); + $.export( + "$summary", + "Successfully retrieved backlink summary", + ); + return response; + }, +}; diff --git a/components/dataforseo/package.json b/components/dataforseo/package.json index 31d0b5466fb61..6b25a7c7a2b06 100644 --- a/components/dataforseo/package.json +++ b/components/dataforseo/package.json @@ -1,6 +1,6 @@ { "name": "@pipedream/dataforseo", - "version": "0.1.0", + "version": "0.2.0", "description": "Pipedream DataForSEO Components", "main": "dataforseo.app.mjs", "keywords": [ From a818abcf639eacf833bd3e1b93f4a82c153f1f34 Mon Sep 17 00:00:00 2001 From: GTFalcao Date: Sun, 18 May 2025 22:18:46 -0300 Subject: [PATCH 03/16] Rename 'app' > 'dataforseo' --- .../get-backlink-summary.mjs | 6 +++--- .../get-business-listings.mjs | 20 +++++++++---------- .../get-keyword-difficulty.mjs | 14 ++++++------- .../get-ranked-keywords.mjs | 14 ++++++------- components/dataforseo/dataforseo.app.mjs | 6 ++++++ 5 files changed, 33 insertions(+), 27 deletions(-) diff --git a/components/dataforseo/actions/get-backlink-summary/get-backlink-summary.mjs b/components/dataforseo/actions/get-backlink-summary/get-backlink-summary.mjs index 1a5d706fe221a..13b9504854b2e 100644 --- a/components/dataforseo/actions/get-backlink-summary/get-backlink-summary.mjs +++ b/components/dataforseo/actions/get-backlink-summary/get-backlink-summary.mjs @@ -1,11 +1,11 @@ -import app from "../../dataforseo.app.mjs"; +import dataforseo from "../../dataforseo.app.mjs"; export default { key: "dataforseo-get-backlink-summary", name: "Get Backlink Summary", description: "Get an overview of backlinks data available for a given domain, subdomain, or webpage. [See the documentation](https://docs.dataforseo.com/v3/business_data/business_listings/search/live/?bash)", - version: "0.0.1", + version: "0.0.2", type: "action", methods: { getBacklinkSummary(args = {}) { @@ -17,7 +17,7 @@ export default { }, }, props: { - app, + dataforseo, target: { type: "string", label: "Target", diff --git a/components/dataforseo/actions/get-business-listings/get-business-listings.mjs b/components/dataforseo/actions/get-business-listings/get-business-listings.mjs index e8ea7197156c6..078405645f80a 100644 --- a/components/dataforseo/actions/get-business-listings/get-business-listings.mjs +++ b/components/dataforseo/actions/get-business-listings/get-business-listings.mjs @@ -1,52 +1,52 @@ -import app from "../../dataforseo.app.mjs"; +import dataforseo from "../../dataforseo.app.mjs"; export default { key: "dataforseo-get-business-listings", name: "Get Business Listings", description: "Get Business Listings. [See the documentation](https://docs.dataforseo.com/v3/business_data/business_listings/search/live/?bash)", - version: "0.0.1", + version: "0.0.2", type: "action", props: { - app, + dataforseo, locationCoordinate: { propDefinition: [ - app, + dataforseo, "locationCoordinate", ], }, categories: { propDefinition: [ - app, + dataforseo, "categories", ], }, title: { propDefinition: [ - app, + dataforseo, "title", ], }, description: { propDefinition: [ - app, + dataforseo, "description", ], }, isClaimed: { propDefinition: [ - app, + dataforseo, "isClaimed", ], }, limit: { propDefinition: [ - app, + dataforseo, "limit", ], }, }, async run({ $ }) { - const response = await this.app.getBusinessListings({ + const response = await this.dataforseo.getBusinessListings({ $, data: [ { diff --git a/components/dataforseo/actions/get-keyword-difficulty/get-keyword-difficulty.mjs b/components/dataforseo/actions/get-keyword-difficulty/get-keyword-difficulty.mjs index ec0f079888410..2ee9bc3c7fe64 100644 --- a/components/dataforseo/actions/get-keyword-difficulty/get-keyword-difficulty.mjs +++ b/components/dataforseo/actions/get-keyword-difficulty/get-keyword-difficulty.mjs @@ -1,34 +1,34 @@ -import app from "../../dataforseo.app.mjs"; +import dataforseo from "../../dataforseo.app.mjs"; export default { key: "dataforseo-get-keyword-difficulty", name: "Get Keyword Difficulty", description: "Get Keyword Difficulty. [See the documentation](https://docs.dataforseo.com/v3/dataforseo_labs/google/bulk_keyword_difficulty/live/?bash)", - version: "0.0.1", + version: "0.0.2", type: "action", props: { - app, + dataforseo, languageCode: { propDefinition: [ - app, + dataforseo, "languageCode", ], }, locationCode: { propDefinition: [ - app, + dataforseo, "locationCode", ], }, keywords: { propDefinition: [ - app, + dataforseo, "keywords", ], }, }, async run({ $ }) { - const response = await this.app.getKeywordDifficulty({ + const response = await this.dataforseo.getKeywordDifficulty({ $, data: [ { diff --git a/components/dataforseo/actions/get-ranked-keywords/get-ranked-keywords.mjs b/components/dataforseo/actions/get-ranked-keywords/get-ranked-keywords.mjs index f8d8ef8eb7ffe..a32347ac42732 100644 --- a/components/dataforseo/actions/get-ranked-keywords/get-ranked-keywords.mjs +++ b/components/dataforseo/actions/get-ranked-keywords/get-ranked-keywords.mjs @@ -1,34 +1,34 @@ -import app from "../../dataforseo.app.mjs"; +import dataforseo from "../../dataforseo.app.mjs"; export default { key: "dataforseo-get-ranked-keywords", name: "Get Ranked Keywords", description: "Description for get-ranked-keywords. [See the documentation](https://docs.dataforseo.com/v3/keywords_data/google_ads/keywords_for_site/task_post/?bash)", - version: "0.0.1", + version: "0.0.2", type: "action", props: { - app, + dataforseo, locationCode: { propDefinition: [ - app, + dataforseo, "locationCode", ], }, targetType: { propDefinition: [ - app, + dataforseo, "targetType", ], }, target: { propDefinition: [ - app, + dataforseo, "target", ], }, }, async run({ $ }) { - const response = await this.app.getRankedKeywords({ + const response = await this.dataforseo.getRankedKeywords({ $, data: [ { diff --git a/components/dataforseo/dataforseo.app.mjs b/components/dataforseo/dataforseo.app.mjs index 97c91b754813c..2cb2891cbbc09 100644 --- a/components/dataforseo/dataforseo.app.mjs +++ b/components/dataforseo/dataforseo.app.mjs @@ -36,6 +36,12 @@ export default { label: "Target", description: "The domain name or the url of the target website or page", }, + backlinksTarget: { + type: "string", + label: "Target", + description: + "Domain, subdomain or webpage to get data for. A domain or a subdomain should be specified without `https://` and `www`. A page should be specified with absolute URL (including `http://` or `https://`", + }, categories: { type: "string[]", label: "Categories", From efaadc7f93854b1615f2a06656294d13411c502f Mon Sep 17 00:00:00 2001 From: GTFalcao Date: Mon, 19 May 2025 00:11:40 -0300 Subject: [PATCH 04/16] Get Backlinks + reusing props --- .../get-backlink-summary.mjs | 53 +++++----- .../actions/get-backlinks/get-backlinks.mjs | 97 +++++++++++++++++++ components/dataforseo/common/utils.mjs | 22 +++++ components/dataforseo/dataforseo.app.mjs | 32 ++++++ 4 files changed, 173 insertions(+), 31 deletions(-) create mode 100644 components/dataforseo/actions/get-backlinks/get-backlinks.mjs create mode 100644 components/dataforseo/common/utils.mjs diff --git a/components/dataforseo/actions/get-backlink-summary/get-backlink-summary.mjs b/components/dataforseo/actions/get-backlink-summary/get-backlink-summary.mjs index 13b9504854b2e..8c9f7db0696e4 100644 --- a/components/dataforseo/actions/get-backlink-summary/get-backlink-summary.mjs +++ b/components/dataforseo/actions/get-backlink-summary/get-backlink-summary.mjs @@ -1,11 +1,12 @@ import dataforseo from "../../dataforseo.app.mjs"; +import { parseObjectEntries } from "../../common/utils.mjs"; export default { key: "dataforseo-get-backlink-summary", name: "Get Backlink Summary", description: - "Get an overview of backlinks data available for a given domain, subdomain, or webpage. [See the documentation](https://docs.dataforseo.com/v3/business_data/business_listings/search/live/?bash)", - version: "0.0.2", + "Get an overview of backlinks data available for a given domain, subdomain, or webpage. [See the documentation](https://docs.dataforseo.com/v3/backlinks/summary/live/?bash)", + version: "0.0.1", type: "action", methods: { getBacklinkSummary(args = {}) { @@ -45,15 +46,6 @@ export default { "Indicates if internal backlinks from subdomains to the target will be excluded from the results. Default is `true`", optional: true, }, - internalListLimit: { - type: "integer", - label: "Internal List Limit", - description: - "Maximum number of elements within internal arrays. [See the documentation](https://docs.dataforseo.com/v3/backlinks/summary/live/?bash#internal_list_limit) for more information", - default: 10, - max: 1000, - optional: true, - }, backlinksStatusType: { type: "string", label: "Include Indirect Links", @@ -78,30 +70,29 @@ export default { default: "live", }, backlinksFilters: { - type: "string[]", - label: "Backlinks Filters", - description: - "You can use this field to filter the initial backlinks that will be included in the dataset for aggregated metrics for your target. [See the documentation](https://docs.dataforseo.com/v3/backlinks/summary/live/?bash#backlinks_filters) for more information. Example: `[\"dofollow\", \"=\", true]`", - optional: true, + propDefinition: [ + dataforseo, + "backlinksFilters", + ], }, rankScale: { - type: "string", - label: "Rank Scale", - description: - "Whether rank values are presented on a 0-100 or 0-1000 scale", - optional: true, - options: [ - "one_hundred", - "one_thousand", + propDefinition: [ + dataforseo, + "rankScale", ], - default: "one_thousand", }, tag: { - type: "string", - label: "Tag", - description: - "You can use this parameter to identify the task and match it with the result.", - optional: true, + propDefinition: [ + dataforseo, + "tag", + ], + }, + additionalOptions: { + propDefinition: [ + dataforseo, + "additionalOptions", + ], + description: "Additional parameters to send in the request. [See the documentation](https://docs.dataforseo.com/v3/backlinks/summary/live/?bash) for all available parameters. Values will be parsed as JSON where applicable.", }, }, async run({ $ }) { @@ -113,11 +104,11 @@ export default { include_subdomains: this.includeSubdomains, include_indirect_links: this.includeIndirectLinks, exclude_internal_backlinks: this.excludeInternalBacklinks, - internal_list_limit: this.internalListLimit, backlinks_status_type: this.backlinksStatusType, backlinks_filters: this.backlinksFilters, rank_scale: this.rankScale, tag: this.tag, + ...parseObjectEntries(this.additionalOptions), }, ], }); diff --git a/components/dataforseo/actions/get-backlinks/get-backlinks.mjs b/components/dataforseo/actions/get-backlinks/get-backlinks.mjs new file mode 100644 index 0000000000000..da23f124793e1 --- /dev/null +++ b/components/dataforseo/actions/get-backlinks/get-backlinks.mjs @@ -0,0 +1,97 @@ +import { parseObjectEntries } from "../../common/utils.mjs"; +import dataforseo from "../../dataforseo.app.mjs"; + +export default { + key: "dataforseo-get-backlinks", + name: "Get Backlinks", + description: + "Get a list of backlinks and relevant data for a given domain, subdomain, or webpage. [See the documentation](https://docs.dataforseo.com/v3/backlinks/backlinks/live/?bash)", + version: "0.0.1", + type: "action", + methods: { + getBacklinks(args = {}) { + return this._makeRequest({ + path: "/backlinks/backlinks/live", + method: "post", + ...args, + }); + }, + }, + props: { + dataforseo, + target: { + propDefinition: [ + dataforseo, + "backlinksTarget", + ], + }, + mode: { + type: "string", + label: "Mode", + description: "Select the mode of grouping the results", + options: [ + { + value: "as_is", + label: "returns all backlinks", + }, + { + value: "one_per_domain", + label: "returns one backlink per domain", + }, + { + value: "one_per_anchor", + label: "returns one backlink per anchor", + }, + ], + default: "as_is", + }, + filters: { + propDefinition: [ + dataforseo, + "backlinksFilters", + ], + }, + order_by: { + type: "string[]", + label: "Order By", + description: "One or more rules to sort results with, with each entry being a field and a direction (`asc` for ascending or `desc` for descending). Example: [\"domain_from_rank,desc\",\"page_from_rank,asc\"]", + }, + rankScale: { + propDefinition: [ + dataforseo, + "rankScale", + ], + }, + tag: { + propDefinition: [ + dataforseo, + "tag", + ], + }, + additionalOptions: { + propDefinition: [ + dataforseo, + "additionalOptions", + ], + description: "Additional parameters to send in the request. [See the documentation](https://docs.dataforseo.com/v3/backlinks/backlinks/live/?bash) for all available parameters. Values will be parsed as JSON where applicable.", + }, + }, + async run({ $ }) { + const response = await this.getBacklinkSummary({ + $, + data: [ + { + target: this.target, + mode: this.mode, + filters: this.filters, + order_by: this.order_by, + rank_scale: this.rankScale, + tag: this.tag, + ...parseObjectEntries(this.additionalOptions), + }, + ], + }); + $.export("$summary", "Successfully retrieved backlink summary"); + return response; + }, +}; diff --git a/components/dataforseo/common/utils.mjs b/components/dataforseo/common/utils.mjs new file mode 100644 index 0000000000000..bfc96415c2b39 --- /dev/null +++ b/components/dataforseo/common/utils.mjs @@ -0,0 +1,22 @@ +function optionalParseAsJSON(value) { + try { + return JSON.parse(value); + } catch (e) { + return value; + } +} + +export function parseObjectEntries(value = {}) { + const obj = typeof value === "string" + ? JSON.parse(value) + : value; + return Object.fromEntries( + Object.entries(obj).map(([ + key, + value, + ]) => [ + key, + optionalParseAsJSON(value), + ]), + ); +} diff --git a/components/dataforseo/dataforseo.app.mjs b/components/dataforseo/dataforseo.app.mjs index 2cb2891cbbc09..6739611e2d42c 100644 --- a/components/dataforseo/dataforseo.app.mjs +++ b/components/dataforseo/dataforseo.app.mjs @@ -92,6 +92,38 @@ export default { label: "Keywords", description: "Target Keywords. The maximum number of keywords is 1000", }, + backlinksFilters: { + type: "string[]", + label: "Backlinks Filters", + description: + "You can use this field to filter the initial backlinks that will be included in the dataset for aggregated metrics for your target. [See the documentation](https://docs.dataforseo.com/v3/backlinks/filters/?bash) for more information. Example: `[\"dofollow\", \"=\", true]`", + optional: true, + }, + rankScale: { + type: "string", + label: "Rank Scale", + description: + "Whether rank values are presented on a 0-100 or 0-1000 scale", + optional: true, + options: [ + "one_hundred", + "one_thousand", + ], + default: "one_thousand", + }, + tag: { + type: "string", + label: "Tag", + description: + "You can use this parameter to identify the task and match it with the result.", + optional: true, + }, + additionalOptions: { + type: "object", + label: "Additional Options", + description: "Additional parameters to send in the request. [See the documentation](https://developers.ringcentral.com/api-reference/External-Contacts/createContact) for all available parameters. Values will be parsed as JSON where applicable.", + optional: true, + }, }, methods: { _baseUrl() { From 91d6e23b56828bcb2189368d65e2d378fbf33839 Mon Sep 17 00:00:00 2001 From: GTFalcao Date: Mon, 19 May 2025 00:26:58 -0300 Subject: [PATCH 05/16] Get backlinks history --- .../get-backlinks-history.mjs | 69 +++++++++++++++++++ .../actions/get-backlinks/get-backlinks.mjs | 2 +- 2 files changed, 70 insertions(+), 1 deletion(-) create mode 100644 components/dataforseo/actions/get-backlinks-history/get-backlinks-history.mjs diff --git a/components/dataforseo/actions/get-backlinks-history/get-backlinks-history.mjs b/components/dataforseo/actions/get-backlinks-history/get-backlinks-history.mjs new file mode 100644 index 0000000000000..5bc06e0cb1820 --- /dev/null +++ b/components/dataforseo/actions/get-backlinks-history/get-backlinks-history.mjs @@ -0,0 +1,69 @@ +import dataforseo from "../../dataforseo.app.mjs"; + +export default { + key: "dataforseo-get-backlinks-history", + name: "Get Backlinks History", + description: + "Get historical backlinks data back to the beginning of 2019. [See the documentation](https://docs.dataforseo.com/v3/backlinks/history/live/)", + version: "0.0.1", + type: "action", + methods: { + getBacklinksHistory(args = {}) { + return this._makeRequest({ + path: "/backlinks/history/live", + method: "post", + ...args, + }); + }, + }, + props: { + dataforseo, + target: { + type: "string", + label: "Target Domain", + description: "Domain should be specified without `https://` and `www`", + }, + dateFrom: { + type: "string", + label: "Starting Date", + description: + "Starting date of the time range, in `YYYY-MM-DD` format. Default and minimum value is `2019-01-01`", + optional: true, + }, + dateTo: { + type: "string", + label: "End Date", + description: + "End date of the time range, in `YYYY-MM-DD` format. Default is today's date", + optional: true, + }, + rankScale: { + propDefinition: [ + dataforseo, + "rankScale", + ], + }, + tag: { + propDefinition: [ + dataforseo, + "tag", + ], + }, + }, + async run({ $ }) { + const response = await this.getBacklinksHistory({ + $, + data: [ + { + target: this.target, + date_from: this.dateFrom, + date_to: this.dateTo, + rank_scale: this.rankScale, + tag: this.tag, + }, + ], + }); + $.export("$summary", "Successfully retrieved backlinks history"); + return response; + }, +}; diff --git a/components/dataforseo/actions/get-backlinks/get-backlinks.mjs b/components/dataforseo/actions/get-backlinks/get-backlinks.mjs index da23f124793e1..b49ebdef45244 100644 --- a/components/dataforseo/actions/get-backlinks/get-backlinks.mjs +++ b/components/dataforseo/actions/get-backlinks/get-backlinks.mjs @@ -91,7 +91,7 @@ export default { }, ], }); - $.export("$summary", "Successfully retrieved backlink summary"); + $.export("$summary", "Successfully retrieved backlinks data"); return response; }, }; From 295c7edd9b715d39f9bc830787025a19da817cbc Mon Sep 17 00:00:00 2001 From: GTFalcao Date: Mon, 19 May 2025 00:54:07 -0300 Subject: [PATCH 06/16] Get Bulk Backlinks and Ranks --- .../get-backlink-summary.mjs | 4 +- .../actions/get-backlinks/get-backlinks.mjs | 4 +- .../get-bulk-backlinks/get-bulk-backlinks.mjs | 46 ++++++++++++++++ .../actions/get-bulk-ranks/get-bulk-ranks.mjs | 53 +++++++++++++++++++ components/dataforseo/dataforseo.app.mjs | 2 +- 5 files changed, 104 insertions(+), 5 deletions(-) create mode 100644 components/dataforseo/actions/get-bulk-backlinks/get-bulk-backlinks.mjs create mode 100644 components/dataforseo/actions/get-bulk-ranks/get-bulk-ranks.mjs diff --git a/components/dataforseo/actions/get-backlink-summary/get-backlink-summary.mjs b/components/dataforseo/actions/get-backlink-summary/get-backlink-summary.mjs index 8c9f7db0696e4..4bb07df7dbb71 100644 --- a/components/dataforseo/actions/get-backlink-summary/get-backlink-summary.mjs +++ b/components/dataforseo/actions/get-backlink-summary/get-backlink-summary.mjs @@ -5,7 +5,7 @@ export default { key: "dataforseo-get-backlink-summary", name: "Get Backlink Summary", description: - "Get an overview of backlinks data available for a given domain, subdomain, or webpage. [See the documentation](https://docs.dataforseo.com/v3/backlinks/summary/live/?bash)", + "Get an overview of backlinks data available for a given domain, subdomain, or webpage. [See the documentation](https://docs.dataforseo.com/v3/backlinks/summary/live/)", version: "0.0.1", type: "action", methods: { @@ -92,7 +92,7 @@ export default { dataforseo, "additionalOptions", ], - description: "Additional parameters to send in the request. [See the documentation](https://docs.dataforseo.com/v3/backlinks/summary/live/?bash) for all available parameters. Values will be parsed as JSON where applicable.", + description: "Additional parameters to send in the request. [See the documentation](https://docs.dataforseo.com/v3/backlinks/summary/live/) for all available parameters. Values will be parsed as JSON where applicable.", }, }, async run({ $ }) { diff --git a/components/dataforseo/actions/get-backlinks/get-backlinks.mjs b/components/dataforseo/actions/get-backlinks/get-backlinks.mjs index b49ebdef45244..6682347e184eb 100644 --- a/components/dataforseo/actions/get-backlinks/get-backlinks.mjs +++ b/components/dataforseo/actions/get-backlinks/get-backlinks.mjs @@ -5,7 +5,7 @@ export default { key: "dataforseo-get-backlinks", name: "Get Backlinks", description: - "Get a list of backlinks and relevant data for a given domain, subdomain, or webpage. [See the documentation](https://docs.dataforseo.com/v3/backlinks/backlinks/live/?bash)", + "Get a list of backlinks and relevant data for a given domain, subdomain, or webpage. [See the documentation](https://docs.dataforseo.com/v3/backlinks/backlinks/live/)", version: "0.0.1", type: "action", methods: { @@ -73,7 +73,7 @@ export default { dataforseo, "additionalOptions", ], - description: "Additional parameters to send in the request. [See the documentation](https://docs.dataforseo.com/v3/backlinks/backlinks/live/?bash) for all available parameters. Values will be parsed as JSON where applicable.", + description: "Additional parameters to send in the request. [See the documentation](https://docs.dataforseo.com/v3/backlinks/backlinks/live/) for all available parameters. Values will be parsed as JSON where applicable.", }, }, async run({ $ }) { diff --git a/components/dataforseo/actions/get-bulk-backlinks/get-bulk-backlinks.mjs b/components/dataforseo/actions/get-bulk-backlinks/get-bulk-backlinks.mjs new file mode 100644 index 0000000000000..b5c567a2b36a6 --- /dev/null +++ b/components/dataforseo/actions/get-bulk-backlinks/get-bulk-backlinks.mjs @@ -0,0 +1,46 @@ +import dataforseo from "../../dataforseo.app.mjs"; + +export default { + key: "dataforseo-get-bulk-ranks", + name: "Get Bulk Ranks", + description: + "Get the number of backlinks pointing to specified domains, subdomains, and pages. [See the documentation](https://docs.dataforseo.com/v3/backlinks/bulk_backlinks/live/)", + version: "0.0.1", + type: "action", + methods: { + getBulkBacklinks(args = {}) { + return this._makeRequest({ + path: "/backlinks/bulk_backlinks/live", + method: "post", + ...args, + }); + }, + }, + props: { + dataforseo, + targets: { + type: "string[]", + label: "Targets", + description: "Up to 1000 domains, subdomains or webpages to get number of backlinks for. A domain or a subdomain should be specified without `https://` and `www`. A page should be specified with absolute URL (including `http://` or `https://`", + }, + tag: { + propDefinition: [ + dataforseo, + "tag", + ], + }, + }, + async run({ $ }) { + const response = await this.getBulkBacklinks({ + $, + data: [ + { + targets: this.targets, + tag: this.tag, + }, + ], + }); + $.export("$summary", "Successfully retrieved bulk backlinks"); + return response; + }, +}; diff --git a/components/dataforseo/actions/get-bulk-ranks/get-bulk-ranks.mjs b/components/dataforseo/actions/get-bulk-ranks/get-bulk-ranks.mjs new file mode 100644 index 0000000000000..de2f533fabf20 --- /dev/null +++ b/components/dataforseo/actions/get-bulk-ranks/get-bulk-ranks.mjs @@ -0,0 +1,53 @@ +import dataforseo from "../../dataforseo.app.mjs"; + +export default { + key: "dataforseo-get-bulk-ranks", + name: "Get Bulk Ranks", + description: + "Get rank scores of specified domains, subdomains, and pages. [See the documentation](https://docs.dataforseo.com/v3/backlinks/bulk_ranks/live/)", + version: "0.0.1", + type: "action", + methods: { + getBacklinksBulkRanks(args = {}) { + return this._makeRequest({ + path: "/backlinks/bulk_ranks/live", + method: "post", + ...args, + }); + }, + }, + props: { + dataforseo, + targets: { + type: "string[]", + label: "Targets", + description: "Up to 1000 domains, subdomains or webpages to get `rank` for. A domain or a subdomain should be specified without `https://` and `www`. A page should be specified with absolute URL (including `http://` or `https://`", + }, + rankScale: { + propDefinition: [ + dataforseo, + "rankScale", + ], + }, + tag: { + propDefinition: [ + dataforseo, + "tag", + ], + }, + }, + async run({ $ }) { + const response = await this.getBacklinksBulkRanks({ + $, + data: [ + { + targets: this.targets, + rank_scale: this.rankScale, + tag: this.tag, + }, + ], + }); + $.export("$summary", "Successfully retrieved bulk ranks"); + return response; + }, +}; diff --git a/components/dataforseo/dataforseo.app.mjs b/components/dataforseo/dataforseo.app.mjs index 6739611e2d42c..5246b1e471bcd 100644 --- a/components/dataforseo/dataforseo.app.mjs +++ b/components/dataforseo/dataforseo.app.mjs @@ -96,7 +96,7 @@ export default { type: "string[]", label: "Backlinks Filters", description: - "You can use this field to filter the initial backlinks that will be included in the dataset for aggregated metrics for your target. [See the documentation](https://docs.dataforseo.com/v3/backlinks/filters/?bash) for more information. Example: `[\"dofollow\", \"=\", true]`", + "You can use this field to filter the initial backlinks that will be included in the dataset for aggregated metrics for your target. [See the documentation](https://docs.dataforseo.com/v3/backlinks/filters/) for more information. Example: `[\"dofollow\", \"=\", true]`", optional: true, }, rankScale: { From f924f1a22ac2a1f2c6adf7ad92c7f472d3955d75 Mon Sep 17 00:00:00 2001 From: GTFalcao Date: Mon, 19 May 2025 01:16:52 -0300 Subject: [PATCH 07/16] Get Domain Pages Summary + prop reusing --- .../get-backlinks-summary.mjs} | 66 ++++-------- .../get-domain-pages-summary.mjs | 101 ++++++++++++++++++ components/dataforseo/dataforseo.app.mjs | 44 ++++++++ 3 files changed, 168 insertions(+), 43 deletions(-) rename components/dataforseo/actions/{get-backlink-summary/get-backlink-summary.mjs => get-backlinks-summary/get-backlinks-summary.mjs} (53%) create mode 100644 components/dataforseo/actions/get-domain-pages-summary/get-domain-pages-summary.mjs diff --git a/components/dataforseo/actions/get-backlink-summary/get-backlink-summary.mjs b/components/dataforseo/actions/get-backlinks-summary/get-backlinks-summary.mjs similarity index 53% rename from components/dataforseo/actions/get-backlink-summary/get-backlink-summary.mjs rename to components/dataforseo/actions/get-backlinks-summary/get-backlinks-summary.mjs index 4bb07df7dbb71..5600418e68a49 100644 --- a/components/dataforseo/actions/get-backlink-summary/get-backlink-summary.mjs +++ b/components/dataforseo/actions/get-backlinks-summary/get-backlinks-summary.mjs @@ -2,14 +2,14 @@ import dataforseo from "../../dataforseo.app.mjs"; import { parseObjectEntries } from "../../common/utils.mjs"; export default { - key: "dataforseo-get-backlink-summary", - name: "Get Backlink Summary", + key: "dataforseo-get-backlinks-summary", + name: "Get Backlinks Summary", description: "Get an overview of backlinks data available for a given domain, subdomain, or webpage. [See the documentation](https://docs.dataforseo.com/v3/backlinks/summary/live/)", version: "0.0.1", type: "action", methods: { - getBacklinkSummary(args = {}) { + getBacklinksSummary(args = {}) { return this._makeRequest({ path: "/backlinks/summary/live", method: "post", @@ -20,54 +20,34 @@ export default { props: { dataforseo, target: { - type: "string", - label: "Target", - description: - "Domain, subdomain or webpage to get data for. A domain or a subdomain should be specified without `https://` and `www`. A page should be specified with absolute URL (including `http://` or `https://`", + propDefinition: [ + dataforseo, + "backlinksTarget", + ], }, includeSubdomains: { - type: "boolean", - label: "Include Subdomains", - description: - "Whether the subdomains of the `target` will be included in the search. Default is `true`", - optional: true, + propDefinition: [ + dataforseo, + "includeSubdomains", + ], }, includeIndirectLinks: { - type: "boolean", - label: "Include Indirect Links", - description: - "Whether indirect links to the target will be included in the results. Default is `true`", - optional: true, + propDefinition: [ + dataforseo, + "includeIndirectLinks", + ], }, excludeInternalBacklinks: { - type: "boolean", - label: "Exclude Internal Backlinks", - description: - "Indicates if internal backlinks from subdomains to the target will be excluded from the results. Default is `true`", - optional: true, + propDefinition: [ + dataforseo, + "excludeInternalBacklinks", + ], }, backlinksStatusType: { - type: "string", - label: "Include Indirect Links", - description: - "You can use this field to choose what backlinks will be returned and used for aggregated metrics for your target", - optional: true, - options: [ - { - value: "all", - label: "All backlinks will be returned and counted", - }, - { - value: "live", - label: - "Backlinks found during the last check will be returned and counted", - }, - { - value: "lost", - label: "Lost backlinks will be returned and counted", - }, + propDefinition: [ + dataforseo, + "backlinksStatusType", ], - default: "live", }, backlinksFilters: { propDefinition: [ @@ -96,7 +76,7 @@ export default { }, }, async run({ $ }) { - const response = await this.getBacklinkSummary({ + const response = await this.getBacklinksSummary({ $, data: [ { diff --git a/components/dataforseo/actions/get-domain-pages-summary/get-domain-pages-summary.mjs b/components/dataforseo/actions/get-domain-pages-summary/get-domain-pages-summary.mjs new file mode 100644 index 0000000000000..df27c50b2b3b8 --- /dev/null +++ b/components/dataforseo/actions/get-domain-pages-summary/get-domain-pages-summary.mjs @@ -0,0 +1,101 @@ +import dataforseo from "../../dataforseo.app.mjs"; +import { parseObjectEntries } from "../../common/utils.mjs"; + +export default { + key: "dataforseo-get-domain-pages-summary", + name: "Get Domain Pages Summary", + description: + "Get detailed summary data on all backlinks and related metrics for each page of the specified domain or subdomain. [See the documentation](https://docs.dataforseo.com/v3/backlinks/domain_pages_summary/live/)", + version: "0.0.1", + type: "action", + methods: { + getDomainPagesSummary(args = {}) { + return this._makeRequest({ + path: "/backlinks/domain_pages_summary/live", + method: "post", + ...args, + }); + }, + }, + props: { + dataforseo, + target: { + propDefinition: [ + dataforseo, + "backlinksTarget", + ], + }, + backlinksStatusType: { + propDefinition: [ + dataforseo, + "backlinksStatusType", + ], + }, + includeSubdomains: { + propDefinition: [ + dataforseo, + "includeSubdomains", + ], + }, + includeIndirectLinks: { + propDefinition: [ + dataforseo, + "includeIndirectLinks", + ], + }, + excludeInternalBacklinks: { + propDefinition: [ + dataforseo, + "excludeInternalBacklinks", + ], + }, + backlinksFilters: { + propDefinition: [ + dataforseo, + "backlinksFilters", + ], + }, + rankScale: { + propDefinition: [ + dataforseo, + "rankScale", + ], + }, + tag: { + propDefinition: [ + dataforseo, + "tag", + ], + }, + additionalOptions: { + propDefinition: [ + dataforseo, + "additionalOptions", + ], + description: "Additional parameters to send in the request. [See the documentation](https://docs.dataforseo.com/v3/backlinks/domain_pages_summary/live/) for all available parameters. Values will be parsed as JSON where applicable.", + }, + }, + async run({ $ }) { + const response = await this.getDomainPagesSummary({ + $, + data: [ + { + target: this.target, + include_subdomains: this.includeSubdomains, + include_indirect_links: this.includeIndirectLinks, + exclude_internal_backlinks: this.excludeInternalBacklinks, + backlinks_status_type: this.backlinksStatusType, + backlinks_filters: this.backlinksFilters, + rank_scale: this.rankScale, + tag: this.tag, + ...parseObjectEntries(this.additionalOptions), + }, + ], + }); + $.export( + "$summary", + "Successfully retrieved domain pages summary", + ); + return response; + }, +}; diff --git a/components/dataforseo/dataforseo.app.mjs b/components/dataforseo/dataforseo.app.mjs index 5246b1e471bcd..fac6eacf7736b 100644 --- a/components/dataforseo/dataforseo.app.mjs +++ b/components/dataforseo/dataforseo.app.mjs @@ -118,6 +118,50 @@ export default { "You can use this parameter to identify the task and match it with the result.", optional: true, }, + includeSubdomains: { + type: "boolean", + label: "Include Subdomains", + description: + "Whether the subdomains of the `target` will be included in the search. Default is `true`", + optional: true, + }, + includeIndirectLinks: { + type: "boolean", + label: "Include Indirect Links", + description: + "Whether indirect links to the target will be included in the results. Default is `true`", + optional: true, + }, + excludeInternalBacklinks: { + type: "boolean", + label: "Exclude Internal Backlinks", + description: + "Indicates if internal backlinks from subdomains to the target will be excluded from the results. Default is `true`", + optional: true, + }, + backlinksStatusType: { + type: "string", + label: "Backlinks Status Type", + description: + "You can use this field to choose what backlinks will be returned and used for aggregated metrics for your target", + optional: true, + options: [ + { + value: "all", + label: "All backlinks will be returned and counted", + }, + { + value: "live", + label: + "Backlinks found during the last check will be returned and counted", + }, + { + value: "lost", + label: "Lost backlinks will be returned and counted", + }, + ], + default: "live", + }, additionalOptions: { type: "object", label: "Additional Options", From f1590d6fa93c710d2c389c4af859b5270b37b033 Mon Sep 17 00:00:00 2001 From: GTFalcao Date: Mon, 19 May 2025 01:20:21 -0300 Subject: [PATCH 08/16] More bulk actions --- .../get-bulk-backlinks/get-bulk-backlinks.mjs | 7 +-- .../actions/get-bulk-ranks/get-bulk-ranks.mjs | 7 +-- .../get-bulk-referring-domains.mjs | 47 +++++++++++++++++++ .../get-bulk-spam-score.mjs | 47 +++++++++++++++++++ components/dataforseo/dataforseo.app.mjs | 5 ++ 5 files changed, 107 insertions(+), 6 deletions(-) create mode 100644 components/dataforseo/actions/get-bulk-referring-domains/get-bulk-referring-domains.mjs create mode 100644 components/dataforseo/actions/get-bulk-spam-score/get-bulk-spam-score.mjs diff --git a/components/dataforseo/actions/get-bulk-backlinks/get-bulk-backlinks.mjs b/components/dataforseo/actions/get-bulk-backlinks/get-bulk-backlinks.mjs index b5c567a2b36a6..d4b6710c84b13 100644 --- a/components/dataforseo/actions/get-bulk-backlinks/get-bulk-backlinks.mjs +++ b/components/dataforseo/actions/get-bulk-backlinks/get-bulk-backlinks.mjs @@ -19,9 +19,10 @@ export default { props: { dataforseo, targets: { - type: "string[]", - label: "Targets", - description: "Up to 1000 domains, subdomains or webpages to get number of backlinks for. A domain or a subdomain should be specified without `https://` and `www`. A page should be specified with absolute URL (including `http://` or `https://`", + propDefinition: [ + dataforseo, + "targets", + ], }, tag: { propDefinition: [ diff --git a/components/dataforseo/actions/get-bulk-ranks/get-bulk-ranks.mjs b/components/dataforseo/actions/get-bulk-ranks/get-bulk-ranks.mjs index de2f533fabf20..52abb2f595c83 100644 --- a/components/dataforseo/actions/get-bulk-ranks/get-bulk-ranks.mjs +++ b/components/dataforseo/actions/get-bulk-ranks/get-bulk-ranks.mjs @@ -19,9 +19,10 @@ export default { props: { dataforseo, targets: { - type: "string[]", - label: "Targets", - description: "Up to 1000 domains, subdomains or webpages to get `rank` for. A domain or a subdomain should be specified without `https://` and `www`. A page should be specified with absolute URL (including `http://` or `https://`", + propDefinition: [ + dataforseo, + "targets", + ], }, rankScale: { propDefinition: [ diff --git a/components/dataforseo/actions/get-bulk-referring-domains/get-bulk-referring-domains.mjs b/components/dataforseo/actions/get-bulk-referring-domains/get-bulk-referring-domains.mjs new file mode 100644 index 0000000000000..c9482833f43a1 --- /dev/null +++ b/components/dataforseo/actions/get-bulk-referring-domains/get-bulk-referring-domains.mjs @@ -0,0 +1,47 @@ +import dataforseo from "../../dataforseo.app.mjs"; + +export default { + key: "dataforseo-get-bulk-referring-domains", + name: "Get Bulk Referring Domains", + description: + "Get the number of referring domains pointing to the specified domains, subdomains, and pages. [See the documentation](https://docs.dataforseo.com/v3/backlinks/bulk_referring_domains/live/)", + version: "0.0.1", + type: "action", + methods: { + getBulkReferringDomains(args = {}) { + return this._makeRequest({ + path: "/backlinks/bulk_referring_domains/live", + method: "post", + ...args, + }); + }, + }, + props: { + dataforseo, + targets: { + propDefinition: [ + dataforseo, + "targets", + ], + }, + tag: { + propDefinition: [ + dataforseo, + "tag", + ], + }, + }, + async run({ $ }) { + const response = await this.getBulkReferringDomains({ + $, + data: [ + { + targets: this.targets, + tag: this.tag, + }, + ], + }); + $.export("$summary", "Successfully retrieved bulk referring domains"); + return response; + }, +}; diff --git a/components/dataforseo/actions/get-bulk-spam-score/get-bulk-spam-score.mjs b/components/dataforseo/actions/get-bulk-spam-score/get-bulk-spam-score.mjs new file mode 100644 index 0000000000000..54a308bcf5610 --- /dev/null +++ b/components/dataforseo/actions/get-bulk-spam-score/get-bulk-spam-score.mjs @@ -0,0 +1,47 @@ +import dataforseo from "../../dataforseo.app.mjs"; + +export default { + key: "dataforseo-get-bulk-spam-score", + name: "Get Bulk Spam Score", + description: + "Get spam scores of the specified domains, subdomains, and pages. [See the documentation](https://docs.dataforseo.com/v3/backlinks/bulk_spam_score/live/)", + version: "0.0.1", + type: "action", + methods: { + getBulkSpamScore(args = {}) { + return this._makeRequest({ + path: "/backlinks/bulk_spam_score/live", + method: "post", + ...args, + }); + }, + }, + props: { + dataforseo, + targets: { + propDefinition: [ + dataforseo, + "targets", + ], + }, + tag: { + propDefinition: [ + dataforseo, + "tag", + ], + }, + }, + async run({ $ }) { + const response = await this.getBulkSpamScore({ + $, + data: [ + { + targets: this.targets, + tag: this.tag, + }, + ], + }); + $.export("$summary", "Successfully retrieved bulk spam score"); + return response; + }, +}; diff --git a/components/dataforseo/dataforseo.app.mjs b/components/dataforseo/dataforseo.app.mjs index fac6eacf7736b..956cad680da99 100644 --- a/components/dataforseo/dataforseo.app.mjs +++ b/components/dataforseo/dataforseo.app.mjs @@ -168,6 +168,11 @@ export default { description: "Additional parameters to send in the request. [See the documentation](https://developers.ringcentral.com/api-reference/External-Contacts/createContact) for all available parameters. Values will be parsed as JSON where applicable.", optional: true, }, + targets: { + type: "string[]", + label: "Targets", + description: "Up to 1000 domains, subdomains or webpages to get data for. A domain or a subdomain should be specified without `https://` and `www`. A page should be specified with absolute URL (including `http://` or `https://`", + }, }, methods: { _baseUrl() { From aebc8c6dbeeac5093ef16e0e1dbd1d35d9760a57 Mon Sep 17 00:00:00 2001 From: GTFalcao Date: Mon, 19 May 2025 01:24:40 -0300 Subject: [PATCH 09/16] Get Referring Domains --- .../get-referring-domains.mjs | 98 +++++++++++++++++++ 1 file changed, 98 insertions(+) create mode 100644 components/dataforseo/actions/get-referring-domains/get-referring-domains.mjs diff --git a/components/dataforseo/actions/get-referring-domains/get-referring-domains.mjs b/components/dataforseo/actions/get-referring-domains/get-referring-domains.mjs new file mode 100644 index 0000000000000..cb9b6c7c77dd1 --- /dev/null +++ b/components/dataforseo/actions/get-referring-domains/get-referring-domains.mjs @@ -0,0 +1,98 @@ +import { parseObjectEntries } from "../../common/utils.mjs"; +import dataforseo from "../../dataforseo.app.mjs"; + +export default { + key: "dataforseo-get-referring-domains", + name: "Get Referring Domains", + description: + "Get detailed overview of referring domains pointing to the specified target. [See the documentation](https://docs.dataforseo.com/v3/backlinks/referring_domains/live/)", + version: "0.0.1", + type: "action", + methods: { + getReferringDomains(args = {}) { + return this._makeRequest({ + path: "/backlinks/referring_domains/live", + method: "post", + ...args, + }); + }, + }, + props: { + dataforseo, + target: { + propDefinition: [ + dataforseo, + "backlinksTarget", + ], + }, + backlinksStatusType: { + propDefinition: [ + dataforseo, + "backlinksStatusType", + ], + }, + includeSubdomains: { + propDefinition: [ + dataforseo, + "includeSubdomains", + ], + }, + includeIndirectLinks: { + propDefinition: [ + dataforseo, + "includeIndirectLinks", + ], + }, + excludeInternalBacklinks: { + propDefinition: [ + dataforseo, + "excludeInternalBacklinks", + ], + }, + backlinksFilters: { + propDefinition: [ + dataforseo, + "backlinksFilters", + ], + }, + rankScale: { + propDefinition: [ + dataforseo, + "rankScale", + ], + }, + tag: { + propDefinition: [ + dataforseo, + "tag", + ], + }, + additionalOptions: { + propDefinition: [ + dataforseo, + "additionalOptions", + ], + description: "Additional parameters to send in the request. [See the documentation](https://docs.dataforseo.com/v3/backlinks/referring_domains/live/) for all available parameters. Values will be parsed as JSON where applicable.", + }, + }, + async run({ $ }) { + const response = await this.getReferringDomains({ + $, + data: [ + { + target: this.target, + include_subdomains: this.includeSubdomains, + include_indirect_links: this.includeIndirectLinks, + exclude_internal_backlinks: this.excludeInternalBacklinks, + backlinks_status_type: this.backlinksStatusType, + backlinks_filters: this.backlinksFilters, + rank_scale: this.rankScale, + tag: this.tag, + ...parseObjectEntries(this.additionalOptions), + }, + ], + }); + $.export("$summary", "Successfully retrieved referring domains"); + return response; + }, +}; From fd10bfd57c4fb45d6c2bbb194fbfd3f3c1cca599 Mon Sep 17 00:00:00 2001 From: GTFalcao Date: Mon, 19 May 2025 01:36:21 -0300 Subject: [PATCH 10/16] Search Business Listings --- .../search-business-listings.mjs | 81 +++++++++++++++++++ 1 file changed, 81 insertions(+) create mode 100644 components/dataforseo/actions/search-business-listings/search-business-listings.mjs diff --git a/components/dataforseo/actions/search-business-listings/search-business-listings.mjs b/components/dataforseo/actions/search-business-listings/search-business-listings.mjs new file mode 100644 index 0000000000000..167ec71495f73 --- /dev/null +++ b/components/dataforseo/actions/search-business-listings/search-business-listings.mjs @@ -0,0 +1,81 @@ +import { parseObjectEntries } from "../../common/utils.mjs"; +import dataforseo from "../../dataforseo.app.mjs"; + +export default { + key: "dataforseo-search-business-listings", + name: "Search Business Listings", + description: + "Get information about business entities listed on Google Maps. [See the documentation](https://docs.dataforseo.com/v3/business_data/business_listings/search/live/)", + version: "0.0.1", + type: "action", + methods: { + searchBusinessListings(args = {}) { + return this._makeRequest({ + path: "/business_data/business_listings/search/live", + method: "post", + ...args, + }); + }, + }, + props: { + dataforseo, + categories: { + type: "string[]", + label: "Business Categories", + description: "Up to 10 categories used to search for business listings.", + optional: true, + }, + description: { + type: "string", + label: "Description", + description: + "Description of the business entity for which the results are collected", + optional: true, + }, + title: { + type: "string", + label: "Title", + description: + "Title of the business entity for which the results are collected", + optional: true, + }, + locationCoordinate: { + type: "string", + label: "Location Coordinates", + description: + "The location to search, in the format `latitude,longitude,radius` where radius is specified in kilometers. Example: `53.476225,-2.243572,200`", + optional: true, + }, + tag: { + propDefinition: [ + dataforseo, + "tag", + ], + }, + additionalOptions: { + propDefinition: [ + dataforseo, + "additionalOptions", + ], + description: + "Additional parameters to send in the request. [See the documentation](https://docs.dataforseo.com/v3/business_data/business_listings/search/live/) for all available parameters. Values will be parsed as JSON where applicable.", + }, + }, + async run({ $ }) { + const response = await this.getBacklinksHistory({ + $, + data: [ + { + categories: this.categories, + description: this.description, + title: this.title, + location_coordinate: this.locationCoordinate, + tag: this.tag, + ...parseObjectEntries(this.additionalOptions), + }, + ], + }); + $.export("$summary", "Successfully retrieved business listings"); + return response; + }, +}; From be9b6807475257dbe5d4e548b41b69882f1b6fa1 Mon Sep 17 00:00:00 2001 From: GTFalcao Date: Mon, 19 May 2025 02:21:34 -0300 Subject: [PATCH 11/16] Get Categories Aggregation --- .../get-categories-aggregation.mjs | 79 +++++++++++++++++++ .../search-business-listings.mjs | 34 ++++---- components/dataforseo/dataforseo.app.mjs | 3 +- 3 files changed, 97 insertions(+), 19 deletions(-) create mode 100644 components/dataforseo/actions/get-categories-aggregation/get-categories-aggregation.mjs diff --git a/components/dataforseo/actions/get-categories-aggregation/get-categories-aggregation.mjs b/components/dataforseo/actions/get-categories-aggregation/get-categories-aggregation.mjs new file mode 100644 index 0000000000000..eaea978f3ab27 --- /dev/null +++ b/components/dataforseo/actions/get-categories-aggregation/get-categories-aggregation.mjs @@ -0,0 +1,79 @@ +import { parseObjectEntries } from "../../common/utils.mjs"; +import dataforseo from "../../dataforseo.app.mjs"; + +export default { + key: "dataforseo-get-categories-aggregation", + name: "Get Categories Aggregation", + description: + "Get information about groups of related categories and the number of entities in each category. [See the documentation](https://docs.dataforseo.com/v3/business_data/business_listings/categories_aggregation/live/)", + version: "0.0.1", + type: "action", + methods: { + getCategoriesAggregation(args = {}) { + return this._makeRequest({ + path: "/business_data/business_listings/categories_aggregation/live", + method: "post", + ...args, + }); + }, + }, + props: { + dataforseo, + categories: { + propDefinition: [ + dataforseo, + "businessCategories", + ], + }, + description: { + propDefinition: [ + dataforseo, + "description", + ], + }, + title: { + propDefinition: [ + dataforseo, + "title", + ], + }, + locationCoordinate: { + propDefinition: [ + dataforseo, + "locationCoordinate", + ], + optional: true, + }, + tag: { + propDefinition: [ + dataforseo, + "tag", + ], + }, + additionalOptions: { + propDefinition: [ + dataforseo, + "additionalOptions", + ], + description: + "Additional parameters to send in the request. [See the documentation](https://docs.dataforseo.com/v3/business_data/business_listings/categories_aggregation/live/) for all available parameters. Values will be parsed as JSON where applicable.", + }, + }, + async run({ $ }) { + const response = await this.getCategoriesAggregation({ + $, + data: [ + { + categories: this.categories, + description: this.description, + title: this.title, + location_coordinate: this.locationCoordinate, + tag: this.tag, + ...parseObjectEntries(this.additionalOptions), + }, + ], + }); + $.export("$summary", "Successfully retrieved categories aggregation"); + return response; + }, +}; diff --git a/components/dataforseo/actions/search-business-listings/search-business-listings.mjs b/components/dataforseo/actions/search-business-listings/search-business-listings.mjs index 167ec71495f73..72d60b0b7f699 100644 --- a/components/dataforseo/actions/search-business-listings/search-business-listings.mjs +++ b/components/dataforseo/actions/search-business-listings/search-business-listings.mjs @@ -20,30 +20,28 @@ export default { props: { dataforseo, categories: { - type: "string[]", - label: "Business Categories", - description: "Up to 10 categories used to search for business listings.", - optional: true, + propDefinition: [ + dataforseo, + "businessCategories", + ], }, description: { - type: "string", - label: "Description", - description: - "Description of the business entity for which the results are collected", - optional: true, + propDefinition: [ + dataforseo, + "description", + ], }, title: { - type: "string", - label: "Title", - description: - "Title of the business entity for which the results are collected", - optional: true, + propDefinition: [ + dataforseo, + "title", + ], }, locationCoordinate: { - type: "string", - label: "Location Coordinates", - description: - "The location to search, in the format `latitude,longitude,radius` where radius is specified in kilometers. Example: `53.476225,-2.243572,200`", + propDefinition: [ + dataforseo, + "locationCoordinate", + ], optional: true, }, tag: { diff --git a/components/dataforseo/dataforseo.app.mjs b/components/dataforseo/dataforseo.app.mjs index 956cad680da99..c8148df969bff 100644 --- a/components/dataforseo/dataforseo.app.mjs +++ b/components/dataforseo/dataforseo.app.mjs @@ -23,7 +23,8 @@ export default { locationCoordinate: { type: "string", label: "Location Coordinate", - description: "The coordinate of the target location. It should be specified in the “latitude,longitude,radius” format, i.e.: `53.476225,-2.243572,200`", + description: + "The location to search, in the format `latitude,longitude,radius` where radius is specified in kilometers. Example: `53.476225,-2.243572,200`", }, targetType: { type: "string", From 1ad18340198cd3ceb3ac44bc303f462976032a59 Mon Sep 17 00:00:00 2001 From: GTFalcao Date: Mon, 19 May 2025 02:44:14 -0300 Subject: [PATCH 12/16] Parse Page Content --- .../parse-page-content/parse-page-content.mjs | 71 +++++++++++++++++++ components/dataforseo/dataforseo.app.mjs | 1 + 2 files changed, 72 insertions(+) create mode 100644 components/dataforseo/actions/parse-page-content/parse-page-content.mjs diff --git a/components/dataforseo/actions/parse-page-content/parse-page-content.mjs b/components/dataforseo/actions/parse-page-content/parse-page-content.mjs new file mode 100644 index 0000000000000..925fa3777bf44 --- /dev/null +++ b/components/dataforseo/actions/parse-page-content/parse-page-content.mjs @@ -0,0 +1,71 @@ +import { parseObjectEntries } from "../../common/utils.mjs"; +import dataforseo from "../../dataforseo.app.mjs"; + +export default { + key: "dataforseo-parse-page-content", + name: "Parse Page Content", + description: + "Parse the content on any page and return its structured content. [See the documentation](https://docs.dataforseo.com/v3/on_page/content_parsing/live/)", + version: "0.0.1", + type: "action", + methods: { + parsePageContent(args = {}) { + return this._makeRequest({ + path: "/on_page/content_parsing/live", + method: "post", + ...args, + }); + }, + }, + props: { + dataforseo, + url: { + type: "string", + label: "URL", + description: + "The URL of the page to parse, e.g. `https://pipedream.com/`", + }, + customUserAgent: { + type: "string", + label: "Custom User Agent", + description: "Custom user agent for crawling a website. Default is `Mozilla/5.0 (compatible; RSiteAuditor)`", + optional: true, + }, + storeRawHtml: { + type: "boolean", + label: "Store Raw HTML", + description: "Set to `true` if you want to get the HTML of the page using the [https://docs.dataforseo.com/v3/on_page/raw_html/](OnPage Raw HTML endpoint)", + optional: true, + }, + enableJavascript: { + type: "boolean", + label: "Enable Javascript", + description: "Set to `true` if you want to load the scripts available on a page", + optional: true, + }, + additionalOptions: { + propDefinition: [ + dataforseo, + "additionalOptions", + ], + description: + "Additional parameters to send in the request. [See the documentation](https://docs.dataforseo.com/v3/on_page/content_parsing/live/) for all available parameters. Values will be parsed as JSON where applicable.", + }, + }, + async run({ $ }) { + const response = await this.parsePageContent({ + $, + data: [ + { + url: this.url, + custom_user_agent: this.customUserAgent, + store_raw_html: this.storeRawHtml, + enable_javascript: this.enableJavascript, + ...parseObjectEntries(this.additionalOptions), + }, + ], + }); + $.export("$summary", "Successfully parsed page content"); + return response; + }, +}; diff --git a/components/dataforseo/dataforseo.app.mjs b/components/dataforseo/dataforseo.app.mjs index c8148df969bff..25f2922410e1a 100644 --- a/components/dataforseo/dataforseo.app.mjs +++ b/components/dataforseo/dataforseo.app.mjs @@ -25,6 +25,7 @@ export default { label: "Location Coordinate", description: "The location to search, in the format `latitude,longitude,radius` where radius is specified in kilometers. Example: `53.476225,-2.243572,200`", + }, targetType: { type: "string", From 2d575bc04bc1680431d4fa3554c0630b13d1be36 Mon Sep 17 00:00:00 2001 From: GTFalcao Date: Mon, 19 May 2025 21:45:37 -0300 Subject: [PATCH 13/16] request adjustments --- .../actions/get-backlinks-history/get-backlinks-history.mjs | 2 +- .../actions/get-backlinks-summary/get-backlinks-summary.mjs | 2 +- components/dataforseo/actions/get-backlinks/get-backlinks.mjs | 2 +- .../actions/get-bulk-backlinks/get-bulk-backlinks.mjs | 2 +- components/dataforseo/actions/get-bulk-ranks/get-bulk-ranks.mjs | 2 +- .../get-bulk-referring-domains/get-bulk-referring-domains.mjs | 2 +- .../actions/get-bulk-spam-score/get-bulk-spam-score.mjs | 2 +- .../get-categories-aggregation/get-categories-aggregation.mjs | 2 +- .../get-domain-pages-summary/get-domain-pages-summary.mjs | 2 +- .../actions/get-referring-domains/get-referring-domains.mjs | 2 +- .../actions/parse-page-content/parse-page-content.mjs | 2 +- .../search-business-listings/search-business-listings.mjs | 2 +- 12 files changed, 12 insertions(+), 12 deletions(-) diff --git a/components/dataforseo/actions/get-backlinks-history/get-backlinks-history.mjs b/components/dataforseo/actions/get-backlinks-history/get-backlinks-history.mjs index 5bc06e0cb1820..1d3799d566e97 100644 --- a/components/dataforseo/actions/get-backlinks-history/get-backlinks-history.mjs +++ b/components/dataforseo/actions/get-backlinks-history/get-backlinks-history.mjs @@ -9,7 +9,7 @@ export default { type: "action", methods: { getBacklinksHistory(args = {}) { - return this._makeRequest({ + return this.dataforseo._makeRequest({ path: "/backlinks/history/live", method: "post", ...args, diff --git a/components/dataforseo/actions/get-backlinks-summary/get-backlinks-summary.mjs b/components/dataforseo/actions/get-backlinks-summary/get-backlinks-summary.mjs index 5600418e68a49..9648d58170fd6 100644 --- a/components/dataforseo/actions/get-backlinks-summary/get-backlinks-summary.mjs +++ b/components/dataforseo/actions/get-backlinks-summary/get-backlinks-summary.mjs @@ -10,7 +10,7 @@ export default { type: "action", methods: { getBacklinksSummary(args = {}) { - return this._makeRequest({ + return this.dataforseo._makeRequest({ path: "/backlinks/summary/live", method: "post", ...args, diff --git a/components/dataforseo/actions/get-backlinks/get-backlinks.mjs b/components/dataforseo/actions/get-backlinks/get-backlinks.mjs index 6682347e184eb..c27451480c337 100644 --- a/components/dataforseo/actions/get-backlinks/get-backlinks.mjs +++ b/components/dataforseo/actions/get-backlinks/get-backlinks.mjs @@ -10,7 +10,7 @@ export default { type: "action", methods: { getBacklinks(args = {}) { - return this._makeRequest({ + return this.dataforseo._makeRequest({ path: "/backlinks/backlinks/live", method: "post", ...args, diff --git a/components/dataforseo/actions/get-bulk-backlinks/get-bulk-backlinks.mjs b/components/dataforseo/actions/get-bulk-backlinks/get-bulk-backlinks.mjs index d4b6710c84b13..068e657158660 100644 --- a/components/dataforseo/actions/get-bulk-backlinks/get-bulk-backlinks.mjs +++ b/components/dataforseo/actions/get-bulk-backlinks/get-bulk-backlinks.mjs @@ -9,7 +9,7 @@ export default { type: "action", methods: { getBulkBacklinks(args = {}) { - return this._makeRequest({ + return this.dataforseo._makeRequest({ path: "/backlinks/bulk_backlinks/live", method: "post", ...args, diff --git a/components/dataforseo/actions/get-bulk-ranks/get-bulk-ranks.mjs b/components/dataforseo/actions/get-bulk-ranks/get-bulk-ranks.mjs index 52abb2f595c83..6b86621c249fc 100644 --- a/components/dataforseo/actions/get-bulk-ranks/get-bulk-ranks.mjs +++ b/components/dataforseo/actions/get-bulk-ranks/get-bulk-ranks.mjs @@ -9,7 +9,7 @@ export default { type: "action", methods: { getBacklinksBulkRanks(args = {}) { - return this._makeRequest({ + return this.dataforseo._makeRequest({ path: "/backlinks/bulk_ranks/live", method: "post", ...args, diff --git a/components/dataforseo/actions/get-bulk-referring-domains/get-bulk-referring-domains.mjs b/components/dataforseo/actions/get-bulk-referring-domains/get-bulk-referring-domains.mjs index c9482833f43a1..8ab65b58f051e 100644 --- a/components/dataforseo/actions/get-bulk-referring-domains/get-bulk-referring-domains.mjs +++ b/components/dataforseo/actions/get-bulk-referring-domains/get-bulk-referring-domains.mjs @@ -9,7 +9,7 @@ export default { type: "action", methods: { getBulkReferringDomains(args = {}) { - return this._makeRequest({ + return this.dataforseo._makeRequest({ path: "/backlinks/bulk_referring_domains/live", method: "post", ...args, diff --git a/components/dataforseo/actions/get-bulk-spam-score/get-bulk-spam-score.mjs b/components/dataforseo/actions/get-bulk-spam-score/get-bulk-spam-score.mjs index 54a308bcf5610..08feabaec805b 100644 --- a/components/dataforseo/actions/get-bulk-spam-score/get-bulk-spam-score.mjs +++ b/components/dataforseo/actions/get-bulk-spam-score/get-bulk-spam-score.mjs @@ -9,7 +9,7 @@ export default { type: "action", methods: { getBulkSpamScore(args = {}) { - return this._makeRequest({ + return this.dataforseo._makeRequest({ path: "/backlinks/bulk_spam_score/live", method: "post", ...args, diff --git a/components/dataforseo/actions/get-categories-aggregation/get-categories-aggregation.mjs b/components/dataforseo/actions/get-categories-aggregation/get-categories-aggregation.mjs index eaea978f3ab27..16110b051ad2f 100644 --- a/components/dataforseo/actions/get-categories-aggregation/get-categories-aggregation.mjs +++ b/components/dataforseo/actions/get-categories-aggregation/get-categories-aggregation.mjs @@ -10,7 +10,7 @@ export default { type: "action", methods: { getCategoriesAggregation(args = {}) { - return this._makeRequest({ + return this.dataforseo._makeRequest({ path: "/business_data/business_listings/categories_aggregation/live", method: "post", ...args, diff --git a/components/dataforseo/actions/get-domain-pages-summary/get-domain-pages-summary.mjs b/components/dataforseo/actions/get-domain-pages-summary/get-domain-pages-summary.mjs index df27c50b2b3b8..6a7ee01178cb0 100644 --- a/components/dataforseo/actions/get-domain-pages-summary/get-domain-pages-summary.mjs +++ b/components/dataforseo/actions/get-domain-pages-summary/get-domain-pages-summary.mjs @@ -10,7 +10,7 @@ export default { type: "action", methods: { getDomainPagesSummary(args = {}) { - return this._makeRequest({ + return this.dataforseo._makeRequest({ path: "/backlinks/domain_pages_summary/live", method: "post", ...args, diff --git a/components/dataforseo/actions/get-referring-domains/get-referring-domains.mjs b/components/dataforseo/actions/get-referring-domains/get-referring-domains.mjs index cb9b6c7c77dd1..6cfbcaccdd9f8 100644 --- a/components/dataforseo/actions/get-referring-domains/get-referring-domains.mjs +++ b/components/dataforseo/actions/get-referring-domains/get-referring-domains.mjs @@ -10,7 +10,7 @@ export default { type: "action", methods: { getReferringDomains(args = {}) { - return this._makeRequest({ + return this.dataforseo._makeRequest({ path: "/backlinks/referring_domains/live", method: "post", ...args, diff --git a/components/dataforseo/actions/parse-page-content/parse-page-content.mjs b/components/dataforseo/actions/parse-page-content/parse-page-content.mjs index 925fa3777bf44..2f11cb3565745 100644 --- a/components/dataforseo/actions/parse-page-content/parse-page-content.mjs +++ b/components/dataforseo/actions/parse-page-content/parse-page-content.mjs @@ -10,7 +10,7 @@ export default { type: "action", methods: { parsePageContent(args = {}) { - return this._makeRequest({ + return this.dataforseo._makeRequest({ path: "/on_page/content_parsing/live", method: "post", ...args, diff --git a/components/dataforseo/actions/search-business-listings/search-business-listings.mjs b/components/dataforseo/actions/search-business-listings/search-business-listings.mjs index 72d60b0b7f699..bff645e093b7b 100644 --- a/components/dataforseo/actions/search-business-listings/search-business-listings.mjs +++ b/components/dataforseo/actions/search-business-listings/search-business-listings.mjs @@ -10,7 +10,7 @@ export default { type: "action", methods: { searchBusinessListings(args = {}) { - return this._makeRequest({ + return this.dataforseo._makeRequest({ path: "/business_data/business_listings/search/live", method: "post", ...args, From f1da4cf034050056967972a2266d227b80baf0e2 Mon Sep 17 00:00:00 2001 From: GTFalcao Date: Mon, 19 May 2025 22:43:38 -0300 Subject: [PATCH 14/16] pnpm --- pnpm-lock.yaml | 8 -------- 1 file changed, 8 deletions(-) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index b1e20188ec18c..d9aeddde9b1d9 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -15400,14 +15400,6 @@ importers: specifier: ^6.0.0 version: 6.2.0 - modelcontextprotocol/node_modules2/@modelcontextprotocol/sdk/dist/cjs: {} - - modelcontextprotocol/node_modules2/@modelcontextprotocol/sdk/dist/esm: {} - - modelcontextprotocol/node_modules2/zod-to-json-schema/dist/cjs: {} - - modelcontextprotocol/node_modules2/zod-to-json-schema/dist/esm: {} - packages/ai: dependencies: '@pipedream/sdk': From cd96bf0b5c2e0d0cec73b5ccc656f2333407923e Mon Sep 17 00:00:00 2001 From: GTFalcao Date: Tue, 20 May 2025 17:51:24 -0300 Subject: [PATCH 15/16] Adjustments --- components/dataforseo/actions/get-backlinks/get-backlinks.mjs | 2 +- components/dataforseo/dataforseo.app.mjs | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/components/dataforseo/actions/get-backlinks/get-backlinks.mjs b/components/dataforseo/actions/get-backlinks/get-backlinks.mjs index c27451480c337..d2cc5879f8730 100644 --- a/components/dataforseo/actions/get-backlinks/get-backlinks.mjs +++ b/components/dataforseo/actions/get-backlinks/get-backlinks.mjs @@ -77,7 +77,7 @@ export default { }, }, async run({ $ }) { - const response = await this.getBacklinkSummary({ + const response = await this.getBacklinks({ $, data: [ { diff --git a/components/dataforseo/dataforseo.app.mjs b/components/dataforseo/dataforseo.app.mjs index 25f2922410e1a..daf4c86d17a28 100644 --- a/components/dataforseo/dataforseo.app.mjs +++ b/components/dataforseo/dataforseo.app.mjs @@ -167,7 +167,7 @@ export default { additionalOptions: { type: "object", label: "Additional Options", - description: "Additional parameters to send in the request. [See the documentation](https://developers.ringcentral.com/api-reference/External-Contacts/createContact) for all available parameters. Values will be parsed as JSON where applicable.", + description: "Additional parameters to send in the request. See the documentation for all available parameters. Values will be parsed as JSON where applicable.", optional: true, }, targets: { From 9cc77e35ce33cf9d01aa0bda98bcc31e7fc2c110 Mon Sep 17 00:00:00 2001 From: GTFalcao Date: Tue, 20 May 2025 17:54:25 -0300 Subject: [PATCH 16/16] Adjustments --- .../actions/get-bulk-backlinks/get-bulk-backlinks.mjs | 6 +++--- .../search-business-listings/search-business-listings.mjs | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/components/dataforseo/actions/get-bulk-backlinks/get-bulk-backlinks.mjs b/components/dataforseo/actions/get-bulk-backlinks/get-bulk-backlinks.mjs index 068e657158660..c94c1c9d0b7d1 100644 --- a/components/dataforseo/actions/get-bulk-backlinks/get-bulk-backlinks.mjs +++ b/components/dataforseo/actions/get-bulk-backlinks/get-bulk-backlinks.mjs @@ -1,10 +1,10 @@ import dataforseo from "../../dataforseo.app.mjs"; export default { - key: "dataforseo-get-bulk-ranks", - name: "Get Bulk Ranks", + key: "dataforseo-get-bulk-backlinks", + name: "Get Bulk Backlinks", description: - "Get the number of backlinks pointing to specified domains, subdomains, and pages. [See the documentation](https://docs.dataforseo.com/v3/backlinks/bulk_backlinks/live/)", + "Get the number of backlinks pointing to specified domains, subdomains, and pages. [See the documentation](https://docs.dataforseo.com/v3/backlinks/bulk_backlinks/live/)", version: "0.0.1", type: "action", methods: { diff --git a/components/dataforseo/actions/search-business-listings/search-business-listings.mjs b/components/dataforseo/actions/search-business-listings/search-business-listings.mjs index bff645e093b7b..3ab4327bd45a5 100644 --- a/components/dataforseo/actions/search-business-listings/search-business-listings.mjs +++ b/components/dataforseo/actions/search-business-listings/search-business-listings.mjs @@ -60,7 +60,7 @@ export default { }, }, async run({ $ }) { - const response = await this.getBacklinksHistory({ + const response = await this.searchBusinessListings({ $, data: [ {