universal-mcp-applications 0.1.22__py3-none-any.whl → 0.1.39rc8__py3-none-any.whl
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.
Potentially problematic release.
This version of universal-mcp-applications might be problematic. Click here for more details.
- universal_mcp/applications/ahrefs/app.py +92 -238
- universal_mcp/applications/airtable/app.py +23 -122
- universal_mcp/applications/apollo/app.py +122 -475
- universal_mcp/applications/asana/app.py +605 -1755
- universal_mcp/applications/aws_s3/app.py +36 -103
- universal_mcp/applications/bill/app.py +644 -2055
- universal_mcp/applications/box/app.py +1246 -4159
- universal_mcp/applications/braze/app.py +410 -1476
- universal_mcp/applications/browser_use/README.md +15 -1
- universal_mcp/applications/browser_use/__init__.py +1 -0
- universal_mcp/applications/browser_use/app.py +94 -37
- universal_mcp/applications/cal_com_v2/app.py +207 -625
- universal_mcp/applications/calendly/app.py +103 -242
- universal_mcp/applications/canva/app.py +75 -140
- universal_mcp/applications/clickup/app.py +331 -798
- universal_mcp/applications/coda/app.py +240 -520
- universal_mcp/applications/confluence/app.py +497 -1285
- universal_mcp/applications/contentful/app.py +36 -151
- universal_mcp/applications/crustdata/app.py +42 -121
- universal_mcp/applications/dialpad/app.py +451 -924
- universal_mcp/applications/digitalocean/app.py +2071 -6082
- universal_mcp/applications/domain_checker/app.py +3 -54
- universal_mcp/applications/e2b/app.py +14 -64
- universal_mcp/applications/elevenlabs/app.py +9 -47
- universal_mcp/applications/exa/README.md +8 -4
- universal_mcp/applications/exa/app.py +408 -186
- universal_mcp/applications/falai/app.py +24 -101
- universal_mcp/applications/figma/app.py +91 -175
- universal_mcp/applications/file_system/app.py +2 -13
- universal_mcp/applications/firecrawl/app.py +186 -163
- universal_mcp/applications/fireflies/app.py +59 -281
- universal_mcp/applications/fpl/app.py +92 -529
- universal_mcp/applications/fpl/utils/fixtures.py +15 -49
- universal_mcp/applications/fpl/utils/helper.py +25 -89
- universal_mcp/applications/fpl/utils/league_utils.py +20 -64
- universal_mcp/applications/ghost_content/app.py +66 -175
- universal_mcp/applications/github/app.py +28 -65
- universal_mcp/applications/gong/app.py +140 -300
- universal_mcp/applications/google_calendar/app.py +26 -78
- universal_mcp/applications/google_docs/app.py +324 -354
- universal_mcp/applications/google_drive/app.py +194 -793
- universal_mcp/applications/google_gemini/app.py +29 -64
- universal_mcp/applications/google_mail/README.md +1 -0
- universal_mcp/applications/google_mail/app.py +93 -214
- universal_mcp/applications/google_searchconsole/app.py +25 -58
- universal_mcp/applications/google_sheet/app.py +174 -623
- universal_mcp/applications/google_sheet/helper.py +26 -53
- universal_mcp/applications/hashnode/app.py +57 -269
- universal_mcp/applications/heygen/app.py +77 -155
- universal_mcp/applications/http_tools/app.py +10 -32
- universal_mcp/applications/hubspot/README.md +1 -1
- universal_mcp/applications/hubspot/app.py +7508 -99
- universal_mcp/applications/jira/app.py +2419 -8334
- universal_mcp/applications/klaviyo/app.py +737 -1619
- universal_mcp/applications/linkedin/README.md +23 -4
- universal_mcp/applications/linkedin/app.py +861 -155
- universal_mcp/applications/mailchimp/app.py +696 -1851
- universal_mcp/applications/markitdown/app.py +8 -20
- universal_mcp/applications/miro/app.py +333 -815
- universal_mcp/applications/ms_teams/app.py +85 -207
- universal_mcp/applications/neon/app.py +144 -250
- universal_mcp/applications/notion/app.py +36 -51
- universal_mcp/applications/onedrive/README.md +24 -0
- universal_mcp/applications/onedrive/__init__.py +1 -0
- universal_mcp/applications/onedrive/app.py +316 -0
- universal_mcp/applications/openai/app.py +42 -165
- universal_mcp/applications/outlook/README.md +22 -9
- universal_mcp/applications/outlook/app.py +606 -262
- universal_mcp/applications/perplexity/README.md +2 -1
- universal_mcp/applications/perplexity/app.py +162 -20
- universal_mcp/applications/pipedrive/app.py +1021 -3331
- universal_mcp/applications/posthog/app.py +272 -541
- universal_mcp/applications/reddit/app.py +88 -204
- universal_mcp/applications/resend/app.py +41 -107
- universal_mcp/applications/retell/app.py +23 -50
- universal_mcp/applications/rocketlane/app.py +250 -963
- universal_mcp/applications/scraper/README.md +7 -4
- universal_mcp/applications/scraper/app.py +245 -283
- universal_mcp/applications/semanticscholar/app.py +36 -78
- universal_mcp/applications/semrush/app.py +43 -77
- universal_mcp/applications/sendgrid/app.py +826 -1576
- universal_mcp/applications/sentry/app.py +444 -1079
- universal_mcp/applications/serpapi/app.py +40 -143
- universal_mcp/applications/sharepoint/README.md +16 -14
- universal_mcp/applications/sharepoint/app.py +245 -154
- universal_mcp/applications/shopify/app.py +1743 -4479
- universal_mcp/applications/shortcut/app.py +272 -534
- universal_mcp/applications/slack/app.py +58 -109
- universal_mcp/applications/spotify/app.py +206 -405
- universal_mcp/applications/supabase/app.py +174 -283
- universal_mcp/applications/tavily/app.py +2 -2
- universal_mcp/applications/trello/app.py +853 -2816
- universal_mcp/applications/twilio/app.py +14 -50
- universal_mcp/applications/twitter/api_segments/compliance_api.py +4 -14
- universal_mcp/applications/twitter/api_segments/dm_conversations_api.py +6 -18
- universal_mcp/applications/twitter/api_segments/likes_api.py +1 -3
- universal_mcp/applications/twitter/api_segments/lists_api.py +5 -15
- universal_mcp/applications/twitter/api_segments/trends_api.py +1 -3
- universal_mcp/applications/twitter/api_segments/tweets_api.py +9 -31
- universal_mcp/applications/twitter/api_segments/usage_api.py +1 -5
- universal_mcp/applications/twitter/api_segments/users_api.py +14 -42
- universal_mcp/applications/whatsapp/app.py +35 -186
- universal_mcp/applications/whatsapp/audio.py +2 -6
- universal_mcp/applications/whatsapp/whatsapp.py +17 -51
- universal_mcp/applications/whatsapp_business/app.py +86 -299
- universal_mcp/applications/wrike/app.py +80 -153
- universal_mcp/applications/yahoo_finance/app.py +19 -65
- universal_mcp/applications/youtube/app.py +120 -306
- universal_mcp/applications/zenquotes/app.py +4 -4
- {universal_mcp_applications-0.1.22.dist-info → universal_mcp_applications-0.1.39rc8.dist-info}/METADATA +4 -2
- {universal_mcp_applications-0.1.22.dist-info → universal_mcp_applications-0.1.39rc8.dist-info}/RECORD +113 -117
- {universal_mcp_applications-0.1.22.dist-info → universal_mcp_applications-0.1.39rc8.dist-info}/WHEEL +1 -1
- universal_mcp/applications/hubspot/api_segments/__init__.py +0 -0
- universal_mcp/applications/hubspot/api_segments/api_segment_base.py +0 -54
- universal_mcp/applications/hubspot/api_segments/crm_api.py +0 -7337
- universal_mcp/applications/hubspot/api_segments/marketing_api.py +0 -1467
- universal_mcp/applications/unipile/README.md +0 -28
- universal_mcp/applications/unipile/__init__.py +0 -1
- universal_mcp/applications/unipile/app.py +0 -1077
- {universal_mcp_applications-0.1.22.dist-info → universal_mcp_applications-0.1.39rc8.dist-info}/licenses/LICENSE +0 -0
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
from typing import Any
|
|
2
|
-
|
|
3
2
|
from universal_mcp.applications.application import APIApplication
|
|
4
3
|
from universal_mcp.integrations import Integration
|
|
5
4
|
|
|
@@ -9,7 +8,7 @@ class AhrefsApp(APIApplication):
|
|
|
9
8
|
super().__init__(name="ahrefs", integration=integration, **kwargs)
|
|
10
9
|
self.base_url = "https://api.ahrefs.com/v3"
|
|
11
10
|
|
|
12
|
-
def crawler_ips(self, output=None) -> dict[str, Any]:
|
|
11
|
+
async def crawler_ips(self, output=None) -> dict[str, Any]:
|
|
13
12
|
"""
|
|
14
13
|
Retrieve the list of public crawler IP addresses from the API.
|
|
15
14
|
|
|
@@ -27,11 +26,11 @@ class AhrefsApp(APIApplication):
|
|
|
27
26
|
"""
|
|
28
27
|
url = f"{self.base_url}/public/crawler-ips"
|
|
29
28
|
query_params = {k: v for k, v in [("output", output)] if v is not None}
|
|
30
|
-
response = self.
|
|
29
|
+
response = await self._aget(url, params=query_params)
|
|
31
30
|
response.raise_for_status()
|
|
32
31
|
return response.json()
|
|
33
32
|
|
|
34
|
-
def crawler_ip_ranges(self, output=None) -> dict[str, Any]:
|
|
33
|
+
async def crawler_ip_ranges(self, output=None) -> dict[str, Any]:
|
|
35
34
|
"""
|
|
36
35
|
Fetches the current public crawler IP ranges from the API, optionally specifying output format.
|
|
37
36
|
|
|
@@ -49,11 +48,11 @@ class AhrefsApp(APIApplication):
|
|
|
49
48
|
"""
|
|
50
49
|
url = f"{self.base_url}/public/crawler-ip-ranges"
|
|
51
50
|
query_params = {k: v for k, v in [("output", output)] if v is not None}
|
|
52
|
-
response = self.
|
|
51
|
+
response = await self._aget(url, params=query_params)
|
|
53
52
|
response.raise_for_status()
|
|
54
53
|
return response.json()
|
|
55
54
|
|
|
56
|
-
def limits_and_usage(self, output=None) -> dict[str, Any]:
|
|
55
|
+
async def limits_and_usage(self, output=None) -> dict[str, Any]:
|
|
57
56
|
"""
|
|
58
57
|
Retrieves current API subscription limits and usage statistics from the service.
|
|
59
58
|
|
|
@@ -71,19 +70,11 @@ class AhrefsApp(APIApplication):
|
|
|
71
70
|
"""
|
|
72
71
|
url = f"{self.base_url}/subscription-info/limits-and-usage"
|
|
73
72
|
query_params = {k: v for k, v in [("output", output)] if v is not None}
|
|
74
|
-
response = self.
|
|
73
|
+
response = await self._aget(url, params=query_params)
|
|
75
74
|
response.raise_for_status()
|
|
76
75
|
return response.json()
|
|
77
76
|
|
|
78
|
-
def batch_analysis(
|
|
79
|
-
self,
|
|
80
|
-
select,
|
|
81
|
-
targets,
|
|
82
|
-
order_by=None,
|
|
83
|
-
country=None,
|
|
84
|
-
volume_mode=None,
|
|
85
|
-
output=None,
|
|
86
|
-
) -> dict[str, Any]:
|
|
77
|
+
async def batch_analysis(self, select, targets, order_by=None, country=None, volume_mode=None, output=None) -> dict[str, Any]:
|
|
87
78
|
"""
|
|
88
79
|
Submits a batch analysis request with specified parameters and returns the analysis results as a dictionary.
|
|
89
80
|
|
|
@@ -120,13 +111,11 @@ class AhrefsApp(APIApplication):
|
|
|
120
111
|
request_body = {k: v for k, v in request_body.items() if v is not None}
|
|
121
112
|
url = f"{self.base_url}/batch-analysis/batch-analysis"
|
|
122
113
|
query_params = {}
|
|
123
|
-
response = self.
|
|
114
|
+
response = await self._apost(url, data=request_body, params=query_params)
|
|
124
115
|
response.raise_for_status()
|
|
125
116
|
return response.json()
|
|
126
117
|
|
|
127
|
-
def serp_overview(
|
|
128
|
-
self, select, country, keyword, top_positions=None, date=None, output=None
|
|
129
|
-
) -> dict[str, Any]:
|
|
118
|
+
async def serp_overview(self, select, country, keyword, top_positions=None, date=None, output=None) -> dict[str, Any]:
|
|
130
119
|
"""
|
|
131
120
|
Retrieves a SERP (Search Engine Results Page) overview report based on specified selection, country, and keyword criteria.
|
|
132
121
|
|
|
@@ -167,11 +156,11 @@ class AhrefsApp(APIApplication):
|
|
|
167
156
|
]
|
|
168
157
|
if v is not None
|
|
169
158
|
}
|
|
170
|
-
response = self.
|
|
159
|
+
response = await self._aget(url, params=query_params)
|
|
171
160
|
response.raise_for_status()
|
|
172
161
|
return response.json()
|
|
173
162
|
|
|
174
|
-
def overview(
|
|
163
|
+
async def overview(
|
|
175
164
|
self,
|
|
176
165
|
select,
|
|
177
166
|
date,
|
|
@@ -239,11 +228,11 @@ class AhrefsApp(APIApplication):
|
|
|
239
228
|
]
|
|
240
229
|
if v is not None
|
|
241
230
|
}
|
|
242
|
-
response = self.
|
|
231
|
+
response = await self._aget(url, params=query_params)
|
|
243
232
|
response.raise_for_status()
|
|
244
233
|
return response.json()
|
|
245
234
|
|
|
246
|
-
def competitors_overview(
|
|
235
|
+
async def competitors_overview(
|
|
247
236
|
self,
|
|
248
237
|
select,
|
|
249
238
|
date,
|
|
@@ -312,11 +301,11 @@ class AhrefsApp(APIApplication):
|
|
|
312
301
|
]
|
|
313
302
|
if v is not None
|
|
314
303
|
}
|
|
315
|
-
response = self.
|
|
304
|
+
response = await self._aget(url, params=query_params)
|
|
316
305
|
response.raise_for_status()
|
|
317
306
|
return response.json()
|
|
318
307
|
|
|
319
|
-
def projects(self, output=None) -> dict[str, Any]:
|
|
308
|
+
async def projects(self, output=None) -> dict[str, Any]:
|
|
320
309
|
"""
|
|
321
310
|
Retrieves a list of site audit projects from the configured base URL, optionally specifying an output format.
|
|
322
311
|
|
|
@@ -334,11 +323,11 @@ class AhrefsApp(APIApplication):
|
|
|
334
323
|
"""
|
|
335
324
|
url = f"{self.base_url}/site-audit/projects"
|
|
336
325
|
query_params = {k: v for k, v in [("output", output)] if v is not None}
|
|
337
|
-
response = self.
|
|
326
|
+
response = await self._aget(url, params=query_params)
|
|
338
327
|
response.raise_for_status()
|
|
339
328
|
return response.json()
|
|
340
329
|
|
|
341
|
-
def domain_rating(self, target, date, protocol=None, output=None) -> dict[str, Any]:
|
|
330
|
+
async def domain_rating(self, target, date, protocol=None, output=None) -> dict[str, Any]:
|
|
342
331
|
"""
|
|
343
332
|
Fetches the domain rating and related metrics for a specified target and date.
|
|
344
333
|
|
|
@@ -363,23 +352,12 @@ class AhrefsApp(APIApplication):
|
|
|
363
352
|
if date is None:
|
|
364
353
|
raise ValueError("Missing required parameter 'date'")
|
|
365
354
|
url = f"{self.base_url}/site-explorer/domain-rating"
|
|
366
|
-
query_params = {
|
|
367
|
-
|
|
368
|
-
for k, v in [
|
|
369
|
-
("protocol", protocol),
|
|
370
|
-
("target", target),
|
|
371
|
-
("date", date),
|
|
372
|
-
("output", output),
|
|
373
|
-
]
|
|
374
|
-
if v is not None
|
|
375
|
-
}
|
|
376
|
-
response = self._get(url, params=query_params)
|
|
355
|
+
query_params = {k: v for k, v in [("protocol", protocol), ("target", target), ("date", date), ("output", output)] if v is not None}
|
|
356
|
+
response = await self._aget(url, params=query_params)
|
|
377
357
|
response.raise_for_status()
|
|
378
358
|
return response.json()
|
|
379
359
|
|
|
380
|
-
def backlinks_stats(
|
|
381
|
-
self, target, date, protocol=None, mode=None, output=None
|
|
382
|
-
) -> dict[str, Any]:
|
|
360
|
+
async def backlinks_stats(self, target, date, protocol=None, mode=None, output=None) -> dict[str, Any]:
|
|
383
361
|
"""
|
|
384
362
|
Retrieves backlink statistics for a specified target and date, with optional filters for protocol, mode, and output format.
|
|
385
363
|
|
|
@@ -407,22 +385,14 @@ class AhrefsApp(APIApplication):
|
|
|
407
385
|
url = f"{self.base_url}/site-explorer/backlinks-stats"
|
|
408
386
|
query_params = {
|
|
409
387
|
k: v
|
|
410
|
-
for k, v in [
|
|
411
|
-
("protocol", protocol),
|
|
412
|
-
("target", target),
|
|
413
|
-
("mode", mode),
|
|
414
|
-
("date", date),
|
|
415
|
-
("output", output),
|
|
416
|
-
]
|
|
388
|
+
for k, v in [("protocol", protocol), ("target", target), ("mode", mode), ("date", date), ("output", output)]
|
|
417
389
|
if v is not None
|
|
418
390
|
}
|
|
419
|
-
response = self.
|
|
391
|
+
response = await self._aget(url, params=query_params)
|
|
420
392
|
response.raise_for_status()
|
|
421
393
|
return response.json()
|
|
422
394
|
|
|
423
|
-
def outlinks_stats(
|
|
424
|
-
self, target, protocol=None, mode=None, output=None
|
|
425
|
-
) -> dict[str, Any]:
|
|
395
|
+
async def outlinks_stats(self, target, protocol=None, mode=None, output=None) -> dict[str, Any]:
|
|
426
396
|
"""
|
|
427
397
|
Retrieves outbound link statistics for the specified target from the site explorer API.
|
|
428
398
|
|
|
@@ -445,30 +415,12 @@ class AhrefsApp(APIApplication):
|
|
|
445
415
|
if target is None:
|
|
446
416
|
raise ValueError("Missing required parameter 'target'")
|
|
447
417
|
url = f"{self.base_url}/site-explorer/outlinks-stats"
|
|
448
|
-
query_params = {
|
|
449
|
-
|
|
450
|
-
for k, v in [
|
|
451
|
-
("protocol", protocol),
|
|
452
|
-
("mode", mode),
|
|
453
|
-
("target", target),
|
|
454
|
-
("output", output),
|
|
455
|
-
]
|
|
456
|
-
if v is not None
|
|
457
|
-
}
|
|
458
|
-
response = self._get(url, params=query_params)
|
|
418
|
+
query_params = {k: v for k, v in [("protocol", protocol), ("mode", mode), ("target", target), ("output", output)] if v is not None}
|
|
419
|
+
response = await self._aget(url, params=query_params)
|
|
459
420
|
response.raise_for_status()
|
|
460
421
|
return response.json()
|
|
461
422
|
|
|
462
|
-
def metrics(
|
|
463
|
-
self,
|
|
464
|
-
target,
|
|
465
|
-
date,
|
|
466
|
-
volume_mode=None,
|
|
467
|
-
country=None,
|
|
468
|
-
protocol=None,
|
|
469
|
-
mode=None,
|
|
470
|
-
output=None,
|
|
471
|
-
) -> dict[str, Any]:
|
|
423
|
+
async def metrics(self, target, date, volume_mode=None, country=None, protocol=None, mode=None, output=None) -> dict[str, Any]:
|
|
472
424
|
"""
|
|
473
425
|
Retrieves metrics data from the site explorer API endpoint.
|
|
474
426
|
|
|
@@ -509,19 +461,12 @@ class AhrefsApp(APIApplication):
|
|
|
509
461
|
]
|
|
510
462
|
if v is not None
|
|
511
463
|
}
|
|
512
|
-
response = self.
|
|
464
|
+
response = await self._aget(url, params=query_params)
|
|
513
465
|
response.raise_for_status()
|
|
514
466
|
return response.json()
|
|
515
467
|
|
|
516
|
-
def refdomains_history(
|
|
517
|
-
self,
|
|
518
|
-
date_from,
|
|
519
|
-
target,
|
|
520
|
-
history_grouping=None,
|
|
521
|
-
date_to=None,
|
|
522
|
-
protocol=None,
|
|
523
|
-
mode=None,
|
|
524
|
-
output=None,
|
|
468
|
+
async def refdomains_history(
|
|
469
|
+
self, date_from, target, history_grouping=None, date_to=None, protocol=None, mode=None, output=None
|
|
525
470
|
) -> dict[str, Any]:
|
|
526
471
|
"""
|
|
527
472
|
Retrieves the historical data of reference domains from a specified site.
|
|
@@ -562,13 +507,11 @@ class AhrefsApp(APIApplication):
|
|
|
562
507
|
]
|
|
563
508
|
if v is not None
|
|
564
509
|
}
|
|
565
|
-
response = self.
|
|
510
|
+
response = await self._aget(url, params=query_params)
|
|
566
511
|
response.raise_for_status()
|
|
567
512
|
return response.json()
|
|
568
513
|
|
|
569
|
-
def domain_rating_history(
|
|
570
|
-
self, date_from, target, history_grouping=None, date_to=None, output=None
|
|
571
|
-
) -> dict[str, Any]:
|
|
514
|
+
async def domain_rating_history(self, date_from, target, history_grouping=None, date_to=None, output=None) -> dict[str, Any]:
|
|
572
515
|
"""
|
|
573
516
|
Retrieves historical domain rating data for a specified target within a given date range.
|
|
574
517
|
|
|
@@ -605,13 +548,11 @@ class AhrefsApp(APIApplication):
|
|
|
605
548
|
]
|
|
606
549
|
if v is not None
|
|
607
550
|
}
|
|
608
|
-
response = self.
|
|
551
|
+
response = await self._aget(url, params=query_params)
|
|
609
552
|
response.raise_for_status()
|
|
610
553
|
return response.json()
|
|
611
554
|
|
|
612
|
-
def url_rating_history(
|
|
613
|
-
self, date_from, target, history_grouping=None, date_to=None, output=None
|
|
614
|
-
) -> dict[str, Any]:
|
|
555
|
+
async def url_rating_history(self, date_from, target, history_grouping=None, date_to=None, output=None) -> dict[str, Any]:
|
|
615
556
|
"""
|
|
616
557
|
Retrieves URL rating history data for a specified target within a date range.
|
|
617
558
|
|
|
@@ -648,20 +589,12 @@ class AhrefsApp(APIApplication):
|
|
|
648
589
|
]
|
|
649
590
|
if v is not None
|
|
650
591
|
}
|
|
651
|
-
response = self.
|
|
592
|
+
response = await self._aget(url, params=query_params)
|
|
652
593
|
response.raise_for_status()
|
|
653
594
|
return response.json()
|
|
654
595
|
|
|
655
|
-
def pages_history(
|
|
656
|
-
self,
|
|
657
|
-
date_from,
|
|
658
|
-
target,
|
|
659
|
-
history_grouping=None,
|
|
660
|
-
date_to=None,
|
|
661
|
-
country=None,
|
|
662
|
-
protocol=None,
|
|
663
|
-
mode=None,
|
|
664
|
-
output=None,
|
|
596
|
+
async def pages_history(
|
|
597
|
+
self, date_from, target, history_grouping=None, date_to=None, country=None, protocol=None, mode=None, output=None
|
|
665
598
|
) -> dict[str, Any]:
|
|
666
599
|
"""
|
|
667
600
|
Retrieves historical page data for a target using specified filters.
|
|
@@ -705,11 +638,11 @@ class AhrefsApp(APIApplication):
|
|
|
705
638
|
]
|
|
706
639
|
if v is not None
|
|
707
640
|
}
|
|
708
|
-
response = self.
|
|
641
|
+
response = await self._aget(url, params=query_params)
|
|
709
642
|
response.raise_for_status()
|
|
710
643
|
return response.json()
|
|
711
644
|
|
|
712
|
-
def metrics_history(
|
|
645
|
+
async def metrics_history(
|
|
713
646
|
self,
|
|
714
647
|
date_from,
|
|
715
648
|
target,
|
|
@@ -767,21 +700,12 @@ class AhrefsApp(APIApplication):
|
|
|
767
700
|
]
|
|
768
701
|
if v is not None
|
|
769
702
|
}
|
|
770
|
-
response = self.
|
|
703
|
+
response = await self._aget(url, params=query_params)
|
|
771
704
|
response.raise_for_status()
|
|
772
705
|
return response.json()
|
|
773
706
|
|
|
774
|
-
def keywords_history(
|
|
775
|
-
self,
|
|
776
|
-
date_from,
|
|
777
|
-
target,
|
|
778
|
-
select=None,
|
|
779
|
-
history_grouping=None,
|
|
780
|
-
date_to=None,
|
|
781
|
-
country=None,
|
|
782
|
-
protocol=None,
|
|
783
|
-
mode=None,
|
|
784
|
-
output=None,
|
|
707
|
+
async def keywords_history(
|
|
708
|
+
self, date_from, target, select=None, history_grouping=None, date_to=None, country=None, protocol=None, mode=None, output=None
|
|
785
709
|
) -> dict[str, Any]:
|
|
786
710
|
"""
|
|
787
711
|
Fetches the historical keyword rankings and performance data for a specified target within an optional date range and set of filters.
|
|
@@ -827,20 +751,11 @@ class AhrefsApp(APIApplication):
|
|
|
827
751
|
]
|
|
828
752
|
if v is not None
|
|
829
753
|
}
|
|
830
|
-
response = self.
|
|
754
|
+
response = await self._aget(url, params=query_params)
|
|
831
755
|
response.raise_for_status()
|
|
832
756
|
return response.json()
|
|
833
757
|
|
|
834
|
-
def metrics_by_country(
|
|
835
|
-
self,
|
|
836
|
-
target,
|
|
837
|
-
date,
|
|
838
|
-
volume_mode=None,
|
|
839
|
-
limit=None,
|
|
840
|
-
protocol=None,
|
|
841
|
-
mode=None,
|
|
842
|
-
output=None,
|
|
843
|
-
) -> dict[str, Any]:
|
|
758
|
+
async def metrics_by_country(self, target, date, volume_mode=None, limit=None, protocol=None, mode=None, output=None) -> dict[str, Any]:
|
|
844
759
|
"""
|
|
845
760
|
Fetches site metrics grouped by country for a specified target and date.
|
|
846
761
|
|
|
@@ -881,19 +796,11 @@ class AhrefsApp(APIApplication):
|
|
|
881
796
|
]
|
|
882
797
|
if v is not None
|
|
883
798
|
}
|
|
884
|
-
response = self.
|
|
799
|
+
response = await self._aget(url, params=query_params)
|
|
885
800
|
response.raise_for_status()
|
|
886
801
|
return response.json()
|
|
887
802
|
|
|
888
|
-
def pages_by_traffic(
|
|
889
|
-
self,
|
|
890
|
-
target,
|
|
891
|
-
volume_mode=None,
|
|
892
|
-
country=None,
|
|
893
|
-
protocol=None,
|
|
894
|
-
mode=None,
|
|
895
|
-
output=None,
|
|
896
|
-
) -> dict[str, Any]:
|
|
803
|
+
async def pages_by_traffic(self, target, volume_mode=None, country=None, protocol=None, mode=None, output=None) -> dict[str, Any]:
|
|
897
804
|
"""
|
|
898
805
|
Retrieves a list of top pages for a specified target domain or URL, ranked by estimated organic search traffic.
|
|
899
806
|
|
|
@@ -930,11 +837,11 @@ class AhrefsApp(APIApplication):
|
|
|
930
837
|
]
|
|
931
838
|
if v is not None
|
|
932
839
|
}
|
|
933
|
-
response = self.
|
|
840
|
+
response = await self._aget(url, params=query_params)
|
|
934
841
|
response.raise_for_status()
|
|
935
842
|
return response.json()
|
|
936
843
|
|
|
937
|
-
def all_backlinks(
|
|
844
|
+
async def all_backlinks(
|
|
938
845
|
self,
|
|
939
846
|
select,
|
|
940
847
|
target,
|
|
@@ -999,11 +906,11 @@ class AhrefsApp(APIApplication):
|
|
|
999
906
|
]
|
|
1000
907
|
if v is not None
|
|
1001
908
|
}
|
|
1002
|
-
response = self.
|
|
909
|
+
response = await self._aget(url, params=query_params)
|
|
1003
910
|
response.raise_for_status()
|
|
1004
911
|
return response.json()
|
|
1005
912
|
|
|
1006
|
-
def broken_backlinks(
|
|
913
|
+
async def broken_backlinks(
|
|
1007
914
|
self,
|
|
1008
915
|
select,
|
|
1009
916
|
target,
|
|
@@ -1065,11 +972,11 @@ class AhrefsApp(APIApplication):
|
|
|
1065
972
|
]
|
|
1066
973
|
if v is not None
|
|
1067
974
|
}
|
|
1068
|
-
response = self.
|
|
975
|
+
response = await self._aget(url, params=query_params)
|
|
1069
976
|
response.raise_for_status()
|
|
1070
977
|
return response.json()
|
|
1071
978
|
|
|
1072
|
-
def refdomains(
|
|
979
|
+
async def refdomains(
|
|
1073
980
|
self,
|
|
1074
981
|
select,
|
|
1075
982
|
target,
|
|
@@ -1131,11 +1038,11 @@ class AhrefsApp(APIApplication):
|
|
|
1131
1038
|
]
|
|
1132
1039
|
if v is not None
|
|
1133
1040
|
}
|
|
1134
|
-
response = self.
|
|
1041
|
+
response = await self._aget(url, params=query_params)
|
|
1135
1042
|
response.raise_for_status()
|
|
1136
1043
|
return response.json()
|
|
1137
1044
|
|
|
1138
|
-
def anchors(
|
|
1045
|
+
async def anchors(
|
|
1139
1046
|
self,
|
|
1140
1047
|
select,
|
|
1141
1048
|
target,
|
|
@@ -1197,22 +1104,12 @@ class AhrefsApp(APIApplication):
|
|
|
1197
1104
|
]
|
|
1198
1105
|
if v is not None
|
|
1199
1106
|
}
|
|
1200
|
-
response = self.
|
|
1107
|
+
response = await self._aget(url, params=query_params)
|
|
1201
1108
|
response.raise_for_status()
|
|
1202
1109
|
return response.json()
|
|
1203
1110
|
|
|
1204
|
-
def linkeddomains(
|
|
1205
|
-
self,
|
|
1206
|
-
select,
|
|
1207
|
-
target,
|
|
1208
|
-
timeout=None,
|
|
1209
|
-
offset=None,
|
|
1210
|
-
limit=None,
|
|
1211
|
-
order_by=None,
|
|
1212
|
-
where=None,
|
|
1213
|
-
protocol=None,
|
|
1214
|
-
mode=None,
|
|
1215
|
-
output=None,
|
|
1111
|
+
async def linkeddomains(
|
|
1112
|
+
self, select, target, timeout=None, offset=None, limit=None, order_by=None, where=None, protocol=None, mode=None, output=None
|
|
1216
1113
|
) -> dict[str, Any]:
|
|
1217
1114
|
"""
|
|
1218
1115
|
Retrieves linked domains for a specified target using the site explorer API endpoint.
|
|
@@ -1260,22 +1157,12 @@ class AhrefsApp(APIApplication):
|
|
|
1260
1157
|
]
|
|
1261
1158
|
if v is not None
|
|
1262
1159
|
}
|
|
1263
|
-
response = self.
|
|
1160
|
+
response = await self._aget(url, params=query_params)
|
|
1264
1161
|
response.raise_for_status()
|
|
1265
1162
|
return response.json()
|
|
1266
1163
|
|
|
1267
|
-
def linked_anchors_external(
|
|
1268
|
-
self,
|
|
1269
|
-
select,
|
|
1270
|
-
target,
|
|
1271
|
-
timeout=None,
|
|
1272
|
-
offset=None,
|
|
1273
|
-
limit=None,
|
|
1274
|
-
order_by=None,
|
|
1275
|
-
where=None,
|
|
1276
|
-
protocol=None,
|
|
1277
|
-
mode=None,
|
|
1278
|
-
output=None,
|
|
1164
|
+
async def linked_anchors_external(
|
|
1165
|
+
self, select, target, timeout=None, offset=None, limit=None, order_by=None, where=None, protocol=None, mode=None, output=None
|
|
1279
1166
|
) -> dict[str, Any]:
|
|
1280
1167
|
"""
|
|
1281
1168
|
Fetch linked external anchor data for a specified target using provided selection and filtering criteria.
|
|
@@ -1323,22 +1210,12 @@ class AhrefsApp(APIApplication):
|
|
|
1323
1210
|
]
|
|
1324
1211
|
if v is not None
|
|
1325
1212
|
}
|
|
1326
|
-
response = self.
|
|
1213
|
+
response = await self._aget(url, params=query_params)
|
|
1327
1214
|
response.raise_for_status()
|
|
1328
1215
|
return response.json()
|
|
1329
1216
|
|
|
1330
|
-
def linked_anchors_internal(
|
|
1331
|
-
self,
|
|
1332
|
-
select,
|
|
1333
|
-
target,
|
|
1334
|
-
timeout=None,
|
|
1335
|
-
offset=None,
|
|
1336
|
-
limit=None,
|
|
1337
|
-
order_by=None,
|
|
1338
|
-
where=None,
|
|
1339
|
-
protocol=None,
|
|
1340
|
-
mode=None,
|
|
1341
|
-
output=None,
|
|
1217
|
+
async def linked_anchors_internal(
|
|
1218
|
+
self, select, target, timeout=None, offset=None, limit=None, order_by=None, where=None, protocol=None, mode=None, output=None
|
|
1342
1219
|
) -> dict[str, Any]:
|
|
1343
1220
|
"""
|
|
1344
1221
|
Fetches internal linked anchor data for a specified target from the site explorer API, applying optional filtering and query parameters.
|
|
@@ -1386,11 +1263,11 @@ class AhrefsApp(APIApplication):
|
|
|
1386
1263
|
]
|
|
1387
1264
|
if v is not None
|
|
1388
1265
|
}
|
|
1389
|
-
response = self.
|
|
1266
|
+
response = await self._aget(url, params=query_params)
|
|
1390
1267
|
response.raise_for_status()
|
|
1391
1268
|
return response.json()
|
|
1392
1269
|
|
|
1393
|
-
def organic_keywords(
|
|
1270
|
+
async def organic_keywords(
|
|
1394
1271
|
self,
|
|
1395
1272
|
select,
|
|
1396
1273
|
target,
|
|
@@ -1465,11 +1342,11 @@ class AhrefsApp(APIApplication):
|
|
|
1465
1342
|
]
|
|
1466
1343
|
if v is not None
|
|
1467
1344
|
}
|
|
1468
|
-
response = self.
|
|
1345
|
+
response = await self._aget(url, params=query_params)
|
|
1469
1346
|
response.raise_for_status()
|
|
1470
1347
|
return response.json()
|
|
1471
1348
|
|
|
1472
|
-
def organic_competitors(
|
|
1349
|
+
async def organic_competitors(
|
|
1473
1350
|
self,
|
|
1474
1351
|
select,
|
|
1475
1352
|
target,
|
|
@@ -1544,11 +1421,11 @@ class AhrefsApp(APIApplication):
|
|
|
1544
1421
|
]
|
|
1545
1422
|
if v is not None
|
|
1546
1423
|
}
|
|
1547
|
-
response = self.
|
|
1424
|
+
response = await self._aget(url, params=query_params)
|
|
1548
1425
|
response.raise_for_status()
|
|
1549
1426
|
return response.json()
|
|
1550
1427
|
|
|
1551
|
-
def top_pages(
|
|
1428
|
+
async def top_pages(
|
|
1552
1429
|
self,
|
|
1553
1430
|
select,
|
|
1554
1431
|
target,
|
|
@@ -1621,11 +1498,11 @@ class AhrefsApp(APIApplication):
|
|
|
1621
1498
|
]
|
|
1622
1499
|
if v is not None
|
|
1623
1500
|
}
|
|
1624
|
-
response = self.
|
|
1501
|
+
response = await self._aget(url, params=query_params)
|
|
1625
1502
|
response.raise_for_status()
|
|
1626
1503
|
return response.json()
|
|
1627
1504
|
|
|
1628
|
-
def paid_pages(
|
|
1505
|
+
async def paid_pages(
|
|
1629
1506
|
self,
|
|
1630
1507
|
select,
|
|
1631
1508
|
target,
|
|
@@ -1698,11 +1575,11 @@ class AhrefsApp(APIApplication):
|
|
|
1698
1575
|
]
|
|
1699
1576
|
if v is not None
|
|
1700
1577
|
}
|
|
1701
|
-
response = self.
|
|
1578
|
+
response = await self._aget(url, params=query_params)
|
|
1702
1579
|
response.raise_for_status()
|
|
1703
1580
|
return response.json()
|
|
1704
1581
|
|
|
1705
|
-
def best_by_external_links(
|
|
1582
|
+
async def best_by_external_links(
|
|
1706
1583
|
self,
|
|
1707
1584
|
select,
|
|
1708
1585
|
target,
|
|
@@ -1764,22 +1641,12 @@ class AhrefsApp(APIApplication):
|
|
|
1764
1641
|
]
|
|
1765
1642
|
if v is not None
|
|
1766
1643
|
}
|
|
1767
|
-
response = self.
|
|
1644
|
+
response = await self._aget(url, params=query_params)
|
|
1768
1645
|
response.raise_for_status()
|
|
1769
1646
|
return response.json()
|
|
1770
1647
|
|
|
1771
|
-
def best_by_internal_links(
|
|
1772
|
-
self,
|
|
1773
|
-
select,
|
|
1774
|
-
target,
|
|
1775
|
-
timeout=None,
|
|
1776
|
-
offset=None,
|
|
1777
|
-
limit=None,
|
|
1778
|
-
order_by=None,
|
|
1779
|
-
where=None,
|
|
1780
|
-
protocol=None,
|
|
1781
|
-
mode=None,
|
|
1782
|
-
output=None,
|
|
1648
|
+
async def best_by_internal_links(
|
|
1649
|
+
self, select, target, timeout=None, offset=None, limit=None, order_by=None, where=None, protocol=None, mode=None, output=None
|
|
1783
1650
|
) -> dict[str, Any]:
|
|
1784
1651
|
"""
|
|
1785
1652
|
Retrieves the best-performing internal links for a specified target using the site explorer API endpoint.
|
|
@@ -1827,11 +1694,11 @@ class AhrefsApp(APIApplication):
|
|
|
1827
1694
|
]
|
|
1828
1695
|
if v is not None
|
|
1829
1696
|
}
|
|
1830
|
-
response = self.
|
|
1697
|
+
response = await self._aget(url, params=query_params)
|
|
1831
1698
|
response.raise_for_status()
|
|
1832
1699
|
return response.json()
|
|
1833
1700
|
|
|
1834
|
-
def total_search_volume_history(
|
|
1701
|
+
async def total_search_volume_history(
|
|
1835
1702
|
self,
|
|
1836
1703
|
date_from,
|
|
1837
1704
|
target,
|
|
@@ -1890,11 +1757,11 @@ class AhrefsApp(APIApplication):
|
|
|
1890
1757
|
]
|
|
1891
1758
|
if v is not None
|
|
1892
1759
|
}
|
|
1893
|
-
response = self.
|
|
1760
|
+
response = await self._aget(url, params=query_params)
|
|
1894
1761
|
response.raise_for_status()
|
|
1895
1762
|
return response.json()
|
|
1896
1763
|
|
|
1897
|
-
def keyword_explorer_overview(
|
|
1764
|
+
async def keyword_explorer_overview(
|
|
1898
1765
|
self,
|
|
1899
1766
|
select,
|
|
1900
1767
|
country,
|
|
@@ -1965,11 +1832,11 @@ class AhrefsApp(APIApplication):
|
|
|
1965
1832
|
]
|
|
1966
1833
|
if v is not None
|
|
1967
1834
|
}
|
|
1968
|
-
response = self.
|
|
1835
|
+
response = await self._aget(url, params=query_params)
|
|
1969
1836
|
response.raise_for_status()
|
|
1970
1837
|
return response.json()
|
|
1971
1838
|
|
|
1972
|
-
def volume_history(self, country, keyword, output=None) -> dict[str, Any]:
|
|
1839
|
+
async def volume_history(self, country, keyword, output=None) -> dict[str, Any]:
|
|
1973
1840
|
"""
|
|
1974
1841
|
Fetches the historical search volume for a given keyword in a specified country.
|
|
1975
1842
|
|
|
@@ -1993,18 +1860,12 @@ class AhrefsApp(APIApplication):
|
|
|
1993
1860
|
if keyword is None:
|
|
1994
1861
|
raise ValueError("Missing required parameter 'keyword'")
|
|
1995
1862
|
url = f"{self.base_url}/keywords-explorer/volume-history"
|
|
1996
|
-
query_params = {
|
|
1997
|
-
|
|
1998
|
-
for k, v in [("country", country), ("keyword", keyword), ("output", output)]
|
|
1999
|
-
if v is not None
|
|
2000
|
-
}
|
|
2001
|
-
response = self._get(url, params=query_params)
|
|
1863
|
+
query_params = {k: v for k, v in [("country", country), ("keyword", keyword), ("output", output)] if v is not None}
|
|
1864
|
+
response = await self._aget(url, params=query_params)
|
|
2002
1865
|
response.raise_for_status()
|
|
2003
1866
|
return response.json()
|
|
2004
1867
|
|
|
2005
|
-
def volume_by_country(
|
|
2006
|
-
self, keyword, limit=None, search_engine=None, output=None
|
|
2007
|
-
) -> dict[str, Any]:
|
|
1868
|
+
async def volume_by_country(self, keyword, limit=None, search_engine=None, output=None) -> dict[str, Any]:
|
|
2008
1869
|
"""
|
|
2009
1870
|
Retrieves search volume by country for a given keyword.
|
|
2010
1871
|
|
|
@@ -2027,20 +1888,13 @@ class AhrefsApp(APIApplication):
|
|
|
2027
1888
|
raise ValueError("Missing required parameter 'keyword'")
|
|
2028
1889
|
url = f"{self.base_url}/keywords-explorer/volume-by-country"
|
|
2029
1890
|
query_params = {
|
|
2030
|
-
k: v
|
|
2031
|
-
for k, v in [
|
|
2032
|
-
("limit", limit),
|
|
2033
|
-
("search_engine", search_engine),
|
|
2034
|
-
("keyword", keyword),
|
|
2035
|
-
("output", output),
|
|
2036
|
-
]
|
|
2037
|
-
if v is not None
|
|
1891
|
+
k: v for k, v in [("limit", limit), ("search_engine", search_engine), ("keyword", keyword), ("output", output)] if v is not None
|
|
2038
1892
|
}
|
|
2039
|
-
response = self.
|
|
1893
|
+
response = await self._aget(url, params=query_params)
|
|
2040
1894
|
response.raise_for_status()
|
|
2041
1895
|
return response.json()
|
|
2042
1896
|
|
|
2043
|
-
def matching_terms(
|
|
1897
|
+
async def matching_terms(
|
|
2044
1898
|
self,
|
|
2045
1899
|
select,
|
|
2046
1900
|
country,
|
|
@@ -2108,11 +1962,11 @@ class AhrefsApp(APIApplication):
|
|
|
2108
1962
|
]
|
|
2109
1963
|
if v is not None
|
|
2110
1964
|
}
|
|
2111
|
-
response = self.
|
|
1965
|
+
response = await self._aget(url, params=query_params)
|
|
2112
1966
|
response.raise_for_status()
|
|
2113
1967
|
return response.json()
|
|
2114
1968
|
|
|
2115
|
-
def related_terms(
|
|
1969
|
+
async def related_terms(
|
|
2116
1970
|
self,
|
|
2117
1971
|
select,
|
|
2118
1972
|
country,
|
|
@@ -2176,11 +2030,11 @@ class AhrefsApp(APIApplication):
|
|
|
2176
2030
|
]
|
|
2177
2031
|
if v is not None
|
|
2178
2032
|
}
|
|
2179
|
-
response = self.
|
|
2033
|
+
response = await self._aget(url, params=query_params)
|
|
2180
2034
|
response.raise_for_status()
|
|
2181
2035
|
return response.json()
|
|
2182
2036
|
|
|
2183
|
-
def search_suggestions(
|
|
2037
|
+
async def search_suggestions(
|
|
2184
2038
|
self,
|
|
2185
2039
|
select,
|
|
2186
2040
|
country,
|
|
@@ -2242,7 +2096,7 @@ class AhrefsApp(APIApplication):
|
|
|
2242
2096
|
]
|
|
2243
2097
|
if v is not None
|
|
2244
2098
|
}
|
|
2245
|
-
response = self.
|
|
2099
|
+
response = await self._aget(url, params=query_params)
|
|
2246
2100
|
response.raise_for_status()
|
|
2247
2101
|
return response.json()
|
|
2248
2102
|
|