crawlora 1.7.0.dev1__tar.gz → 1.8.0.dev1__tar.gz
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.
- {crawlora-1.7.0.dev1/crawlora.egg-info → crawlora-1.8.0.dev1}/PKG-INFO +3 -3
- {crawlora-1.7.0.dev1 → crawlora-1.8.0.dev1}/README.md +2 -2
- {crawlora-1.7.0.dev1 → crawlora-1.8.0.dev1}/crawlora/client.py +1 -1
- {crawlora-1.7.0.dev1 → crawlora-1.8.0.dev1}/crawlora/client.pyi +544 -0
- {crawlora-1.7.0.dev1 → crawlora-1.8.0.dev1}/crawlora/operations.py +115 -1
- {crawlora-1.7.0.dev1 → crawlora-1.8.0.dev1/crawlora.egg-info}/PKG-INFO +3 -3
- {crawlora-1.7.0.dev1 → crawlora-1.8.0.dev1}/docs/operations.md +9 -1
- {crawlora-1.7.0.dev1 → crawlora-1.8.0.dev1}/pyproject.toml +1 -1
- {crawlora-1.7.0.dev1 → crawlora-1.8.0.dev1}/tests/test_client.py +2 -2
- {crawlora-1.7.0.dev1 → crawlora-1.8.0.dev1}/LICENSE +0 -0
- {crawlora-1.7.0.dev1 → crawlora-1.8.0.dev1}/MANIFEST.in +0 -0
- {crawlora-1.7.0.dev1 → crawlora-1.8.0.dev1}/crawlora/__init__.py +0 -0
- {crawlora-1.7.0.dev1 → crawlora-1.8.0.dev1}/crawlora/_pagination.py +0 -0
- {crawlora-1.7.0.dev1 → crawlora-1.8.0.dev1}/crawlora/_transport_sync.py +0 -0
- {crawlora-1.7.0.dev1 → crawlora-1.8.0.dev1}/crawlora/async_client.py +0 -0
- {crawlora-1.7.0.dev1 → crawlora-1.8.0.dev1}/crawlora/py.typed +0 -0
- {crawlora-1.7.0.dev1 → crawlora-1.8.0.dev1}/crawlora.egg-info/SOURCES.txt +0 -0
- {crawlora-1.7.0.dev1 → crawlora-1.8.0.dev1}/crawlora.egg-info/dependency_links.txt +0 -0
- {crawlora-1.7.0.dev1 → crawlora-1.8.0.dev1}/crawlora.egg-info/requires.txt +0 -0
- {crawlora-1.7.0.dev1 → crawlora-1.8.0.dev1}/crawlora.egg-info/top_level.txt +0 -0
- {crawlora-1.7.0.dev1 → crawlora-1.8.0.dev1}/docs/recipes.md +0 -0
- {crawlora-1.7.0.dev1 → crawlora-1.8.0.dev1}/examples/async_search.py +0 -0
- {crawlora-1.7.0.dev1 → crawlora-1.8.0.dev1}/examples/bing_search.py +0 -0
- {crawlora-1.7.0.dev1 → crawlora-1.8.0.dev1}/examples/paginate.py +0 -0
- {crawlora-1.7.0.dev1 → crawlora-1.8.0.dev1}/examples/youtube_transcript.py +0 -0
- {crawlora-1.7.0.dev1 → crawlora-1.8.0.dev1}/setup.cfg +0 -0
- {crawlora-1.7.0.dev1 → crawlora-1.8.0.dev1}/tests/test_async_httpx.py +0 -0
- {crawlora-1.7.0.dev1 → crawlora-1.8.0.dev1}/tests/test_examples.py +0 -0
- {crawlora-1.7.0.dev1 → crawlora-1.8.0.dev1}/tests/test_v14_features.py +0 -0
- {crawlora-1.7.0.dev1 → crawlora-1.8.0.dev1}/tests/test_v15_features.py +0 -0
- {crawlora-1.7.0.dev1 → crawlora-1.8.0.dev1}/tests/test_w2_features.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: crawlora
|
|
3
|
-
Version: 1.
|
|
3
|
+
Version: 1.8.0.dev1
|
|
4
4
|
Summary: Official Python SDK for the Crawlora web-scraping API: typed grouped and dynamic operation calls for every public endpoint, with retries, pagination, hooks, and an async client.
|
|
5
5
|
Author: Crawlora
|
|
6
6
|
License-Expression: MIT
|
|
@@ -27,7 +27,7 @@ Dynamic: license-file
|
|
|
27
27
|
# Crawlora Python SDK
|
|
28
28
|
|
|
29
29
|
Python client for the public Crawlora API. Use it to call Crawlora scraping,
|
|
30
|
-
search, social, marketplace, media, maps, finance, brand, and usage endpoints
|
|
30
|
+
search, social, marketplace, media, maps, finance, prediction-market, brand, and usage endpoints
|
|
31
31
|
with generated type stubs for editor and type-checker support.
|
|
32
32
|
|
|
33
33
|
- Runtime: Python 3.10+
|
|
@@ -38,7 +38,7 @@ with generated type stubs for editor and type-checker support.
|
|
|
38
38
|
## Install
|
|
39
39
|
|
|
40
40
|
Published on [PyPI](https://pypi.org/project/crawlora/). The current release is a
|
|
41
|
-
prerelease (`1.
|
|
41
|
+
prerelease (`1.7.0.dev1`), so install it with `--pre`:
|
|
42
42
|
|
|
43
43
|
```sh
|
|
44
44
|
pip install --pre crawlora
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
# Crawlora Python SDK
|
|
2
2
|
|
|
3
3
|
Python client for the public Crawlora API. Use it to call Crawlora scraping,
|
|
4
|
-
search, social, marketplace, media, maps, finance, brand, and usage endpoints
|
|
4
|
+
search, social, marketplace, media, maps, finance, prediction-market, brand, and usage endpoints
|
|
5
5
|
with generated type stubs for editor and type-checker support.
|
|
6
6
|
|
|
7
7
|
- Runtime: Python 3.10+
|
|
@@ -12,7 +12,7 @@ with generated type stubs for editor and type-checker support.
|
|
|
12
12
|
## Install
|
|
13
13
|
|
|
14
14
|
Published on [PyPI](https://pypi.org/project/crawlora/). The current release is a
|
|
15
|
-
prerelease (`1.
|
|
15
|
+
prerelease (`1.7.0.dev1`), so install it with `--pre`:
|
|
16
16
|
|
|
17
17
|
```sh
|
|
18
18
|
pip install --pre crawlora
|
|
@@ -20,7 +20,7 @@ from ._transport_sync import KeepAliveTransport
|
|
|
20
20
|
from .operations import GROUPS, OPERATIONS
|
|
21
21
|
|
|
22
22
|
DEFAULT_BASE_URL = "https://api.crawlora.net/api/v1"
|
|
23
|
-
VERSION = "1.
|
|
23
|
+
VERSION = "1.8.0-sdk.1"
|
|
24
24
|
DEFAULT_USER_AGENT = f"crawlora-python-sdk/{VERSION}"
|
|
25
25
|
DEFAULT_MAX_RETRY_DELAY = 30.0
|
|
26
26
|
DEFAULT_RETRY_STATUSES = (408, 409, 425, 429)
|
|
@@ -173,6 +173,43 @@ ModelAmazonSuggestResponseDoc = TypedDict('ModelAmazonSuggestResponseDoc', {
|
|
|
173
173
|
'msg': NotRequired[str],
|
|
174
174
|
}, total=False)
|
|
175
175
|
|
|
176
|
+
ModelAntibotBand = Literal['easy', 'medium', 'hard', 'very_hard', 'blocked', 'unknown']
|
|
177
|
+
|
|
178
|
+
ModelAntibotProtection = TypedDict('ModelAntibotProtection', {
|
|
179
|
+
'confidence': NotRequired[str],
|
|
180
|
+
'evidence': NotRequired[list[str]],
|
|
181
|
+
'kind': NotRequired[str],
|
|
182
|
+
'vendor': NotRequired[str],
|
|
183
|
+
}, total=False)
|
|
184
|
+
|
|
185
|
+
ModelAntibotSignals = TypedDict('ModelAntibotSignals', {
|
|
186
|
+
'attempts_passed': NotRequired[int],
|
|
187
|
+
'attempts_run': NotRequired[int],
|
|
188
|
+
'attempts_skipped': NotRequired[int],
|
|
189
|
+
'block_markers': NotRequired[list[str]],
|
|
190
|
+
'blocked_status': NotRequired[bool],
|
|
191
|
+
'captcha_detected': NotRequired[bool],
|
|
192
|
+
'challenge_detected': NotRequired[bool],
|
|
193
|
+
'js_render_likely': NotRequired[bool],
|
|
194
|
+
'rate_limited': NotRequired[bool],
|
|
195
|
+
}, total=False)
|
|
196
|
+
|
|
197
|
+
ModelAntibotVerdict = TypedDict('ModelAntibotVerdict', {
|
|
198
|
+
'coverage': NotRequired[str],
|
|
199
|
+
'difficulty_band': NotRequired[ModelAntibotBand],
|
|
200
|
+
'difficulty_score': NotRequired[int],
|
|
201
|
+
'easiest_working_transport': NotRequired[str],
|
|
202
|
+
'gated_layers': NotRequired[list[str]],
|
|
203
|
+
'notes': NotRequired[list[str]],
|
|
204
|
+
'protections': NotRequired[list[ModelAntibotProtection]],
|
|
205
|
+
'recommended_approach': NotRequired[str],
|
|
206
|
+
'recommended_profile': NotRequired[str],
|
|
207
|
+
'scrapeable': NotRequired[bool],
|
|
208
|
+
'signals': NotRequired[ModelAntibotSignals],
|
|
209
|
+
'summary': NotRequired[str],
|
|
210
|
+
'url': NotRequired[str],
|
|
211
|
+
}, total=False)
|
|
212
|
+
|
|
176
213
|
ModelApiComponentStatus = TypedDict('ModelApiComponentStatus', {
|
|
177
214
|
'error': NotRequired[str],
|
|
178
215
|
'ready': NotRequired[bool],
|
|
@@ -2480,6 +2517,48 @@ ModelContactContact = TypedDict('ModelContactContact', {
|
|
|
2480
2517
|
'url': NotRequired[str],
|
|
2481
2518
|
}, total=False)
|
|
2482
2519
|
|
|
2520
|
+
ModelContactContactRequest = TypedDict('ModelContactContactRequest', {
|
|
2521
|
+
'independents_only': NotRequired[bool],
|
|
2522
|
+
'max_pages': NotRequired[int],
|
|
2523
|
+
'url': Required[str],
|
|
2524
|
+
'verify': NotRequired[bool],
|
|
2525
|
+
}, total=False)
|
|
2526
|
+
|
|
2527
|
+
ModelContactContactResult = TypedDict('ModelContactContactResult', {
|
|
2528
|
+
'crawl_status': NotRequired[Literal['ok', 'blocked', 'unreachable']],
|
|
2529
|
+
'crawled_pages': NotRequired[list[str]],
|
|
2530
|
+
'domain': NotRequired[str],
|
|
2531
|
+
'domain_type': NotRequired[Literal['independent', 'chain', 'social', 'builder', 'directory']],
|
|
2532
|
+
'emails': NotRequired[list[ModelContactEmailContact]],
|
|
2533
|
+
'phones': NotRequired[list[ModelContactPhoneContact]],
|
|
2534
|
+
'socials': NotRequired[list[ModelContactSocialProfile]],
|
|
2535
|
+
'website': NotRequired[str],
|
|
2536
|
+
}, total=False)
|
|
2537
|
+
|
|
2538
|
+
ModelContactEmailContact = TypedDict('ModelContactEmailContact', {
|
|
2539
|
+
'address': NotRequired[str],
|
|
2540
|
+
'source_page': NotRequired[str],
|
|
2541
|
+
'status': NotRequired[Literal['verified', 'risky', 'unverified', 'invalid']],
|
|
2542
|
+
'type': NotRequired[Literal['generic', 'role', 'personal']],
|
|
2543
|
+
}, total=False)
|
|
2544
|
+
|
|
2545
|
+
ModelContactPhoneContact = TypedDict('ModelContactPhoneContact', {
|
|
2546
|
+
'number': NotRequired[str],
|
|
2547
|
+
'source_page': NotRequired[str],
|
|
2548
|
+
}, total=False)
|
|
2549
|
+
|
|
2550
|
+
ModelContactSocialProfile = TypedDict('ModelContactSocialProfile', {
|
|
2551
|
+
'handle': NotRequired[str],
|
|
2552
|
+
'network': NotRequired[str],
|
|
2553
|
+
'url': NotRequired[str],
|
|
2554
|
+
}, total=False)
|
|
2555
|
+
|
|
2556
|
+
ModelContactContactResponseDoc = TypedDict('ModelContactContactResponseDoc', {
|
|
2557
|
+
'code': NotRequired[int],
|
|
2558
|
+
'data': NotRequired[ModelContactContactResult],
|
|
2559
|
+
'msg': NotRequired[str],
|
|
2560
|
+
}, total=False)
|
|
2561
|
+
|
|
2483
2562
|
ModelDatasetsDatasetInfo = TypedDict('ModelDatasetsDatasetInfo', {
|
|
2484
2563
|
'capabilities': NotRequired[list[str]],
|
|
2485
2564
|
'description': NotRequired[str],
|
|
@@ -2530,6 +2609,17 @@ ModelDatasetsListResponseDoc = TypedDict('ModelDatasetsListResponseDoc', {
|
|
|
2530
2609
|
'msg': NotRequired[str],
|
|
2531
2610
|
}, total=False)
|
|
2532
2611
|
|
|
2612
|
+
ModelDiagnosticsAntibotCheckRequest = TypedDict('ModelDiagnosticsAntibotCheckRequest', {
|
|
2613
|
+
'fast': NotRequired[bool],
|
|
2614
|
+
'url': Required[str],
|
|
2615
|
+
}, total=False)
|
|
2616
|
+
|
|
2617
|
+
ModelDiagnosticsAntibotCheckResponseDoc = TypedDict('ModelDiagnosticsAntibotCheckResponseDoc', {
|
|
2618
|
+
'code': NotRequired[int],
|
|
2619
|
+
'data': NotRequired[ModelAntibotVerdict],
|
|
2620
|
+
'msg': NotRequired[str],
|
|
2621
|
+
}, total=False)
|
|
2622
|
+
|
|
2533
2623
|
ModelEbayItem = TypedDict('ModelEbayItem', {
|
|
2534
2624
|
'availability': NotRequired[str],
|
|
2535
2625
|
'condition': NotRequired[str],
|
|
@@ -7476,6 +7566,107 @@ ModelRedditUserPostsResponseDoc = TypedDict('ModelRedditUserPostsResponseDoc', {
|
|
|
7476
7566
|
'msg': NotRequired[str],
|
|
7477
7567
|
}, total=False)
|
|
7478
7568
|
|
|
7569
|
+
ModelRedfinEstimateResponse = TypedDict('ModelRedfinEstimateResponse', {
|
|
7570
|
+
'address': NotRequired[str],
|
|
7571
|
+
'baths': NotRequired[float],
|
|
7572
|
+
'beds': NotRequired[float],
|
|
7573
|
+
'city_time_series': NotRequired[list[float]],
|
|
7574
|
+
'county_time_series': NotRequired[list[float]],
|
|
7575
|
+
'estimate': NotRequired[float],
|
|
7576
|
+
'estimate_text': NotRequired[str],
|
|
7577
|
+
'latitude': NotRequired[float],
|
|
7578
|
+
'listing_price': NotRequired[float],
|
|
7579
|
+
'longitude': NotRequired[float],
|
|
7580
|
+
'postal_code_time_series': NotRequired[list[float]],
|
|
7581
|
+
'property_id': NotRequired[str],
|
|
7582
|
+
'property_time_series': NotRequired[list[float]],
|
|
7583
|
+
'sqft': NotRequired[float],
|
|
7584
|
+
'updated_at': NotRequired[int],
|
|
7585
|
+
'year_built': NotRequired[int],
|
|
7586
|
+
}, total=False)
|
|
7587
|
+
|
|
7588
|
+
ModelRedfinPropertyItem = TypedDict('ModelRedfinPropertyItem', {
|
|
7589
|
+
'address': NotRequired[str],
|
|
7590
|
+
'baths': NotRequired[float],
|
|
7591
|
+
'beds': NotRequired[float],
|
|
7592
|
+
'city': NotRequired[str],
|
|
7593
|
+
'days_on_market': NotRequired[int],
|
|
7594
|
+
'hoa_monthly': NotRequired[float],
|
|
7595
|
+
'image': NotRequired[str],
|
|
7596
|
+
'latitude': NotRequired[float],
|
|
7597
|
+
'listing_id': NotRequired[str],
|
|
7598
|
+
'longitude': NotRequired[float],
|
|
7599
|
+
'lot_size': NotRequired[float],
|
|
7600
|
+
'mls_number': NotRequired[str],
|
|
7601
|
+
'price': NotRequired[float],
|
|
7602
|
+
'price_per_sqft': NotRequired[float],
|
|
7603
|
+
'property_id': NotRequired[str],
|
|
7604
|
+
'property_type': NotRequired[str],
|
|
7605
|
+
'sqft': NotRequired[float],
|
|
7606
|
+
'state': NotRequired[str],
|
|
7607
|
+
'status': NotRequired[str],
|
|
7608
|
+
'url': NotRequired[str],
|
|
7609
|
+
'year_built': NotRequired[int],
|
|
7610
|
+
'zip': NotRequired[str],
|
|
7611
|
+
}, total=False)
|
|
7612
|
+
|
|
7613
|
+
ModelRedfinPropertyResponse = TypedDict('ModelRedfinPropertyResponse', {
|
|
7614
|
+
'address': NotRequired[str],
|
|
7615
|
+
'baths': NotRequired[float],
|
|
7616
|
+
'beds': NotRequired[float],
|
|
7617
|
+
'city': NotRequired[str],
|
|
7618
|
+
'days_on_market': NotRequired[int],
|
|
7619
|
+
'description': NotRequired[str],
|
|
7620
|
+
'facts': NotRequired[list[str]],
|
|
7621
|
+
'hoa_monthly': NotRequired[float],
|
|
7622
|
+
'image': NotRequired[str],
|
|
7623
|
+
'latitude': NotRequired[float],
|
|
7624
|
+
'listing_id': NotRequired[str],
|
|
7625
|
+
'longitude': NotRequired[float],
|
|
7626
|
+
'lot_size': NotRequired[float],
|
|
7627
|
+
'mls_number': NotRequired[str],
|
|
7628
|
+
'price': NotRequired[float],
|
|
7629
|
+
'price_per_sqft': NotRequired[float],
|
|
7630
|
+
'property_id': NotRequired[str],
|
|
7631
|
+
'property_type': NotRequired[str],
|
|
7632
|
+
'sqft': NotRequired[float],
|
|
7633
|
+
'state': NotRequired[str],
|
|
7634
|
+
'status': NotRequired[str],
|
|
7635
|
+
'url': NotRequired[str],
|
|
7636
|
+
'year_built': NotRequired[int],
|
|
7637
|
+
'zip': NotRequired[str],
|
|
7638
|
+
}, total=False)
|
|
7639
|
+
|
|
7640
|
+
ModelRedfinRegionTrendsResponse = TypedDict('ModelRedfinRegionTrendsResponse', {
|
|
7641
|
+
'avg_days_on_market': NotRequired[str],
|
|
7642
|
+
'avg_down_payment': NotRequired[str],
|
|
7643
|
+
'avg_num_offers': NotRequired[str],
|
|
7644
|
+
'median_list_per_sqft': NotRequired[str],
|
|
7645
|
+
'median_list_price': NotRequired[str],
|
|
7646
|
+
'median_sale_per_list': NotRequired[str],
|
|
7647
|
+
'median_sale_per_sqft': NotRequired[str],
|
|
7648
|
+
'median_sale_price': NotRequired[str],
|
|
7649
|
+
'num_homes_on_market': NotRequired[str],
|
|
7650
|
+
'num_homes_sold': NotRequired[str],
|
|
7651
|
+
'region_id': NotRequired[int],
|
|
7652
|
+
'region_type': NotRequired[int],
|
|
7653
|
+
'yoy_sale_per_sqft': NotRequired[str],
|
|
7654
|
+
'yoy_sale_price': NotRequired[str],
|
|
7655
|
+
}, total=False)
|
|
7656
|
+
|
|
7657
|
+
ModelRedfinSearchResponse = TypedDict('ModelRedfinSearchResponse', {
|
|
7658
|
+
'location': NotRequired[str],
|
|
7659
|
+
'page': NotRequired[int],
|
|
7660
|
+
'region_id': NotRequired[int],
|
|
7661
|
+
'region_type': NotRequired[int],
|
|
7662
|
+
'results': NotRequired[list[ModelRedfinPropertyItem]],
|
|
7663
|
+
}, total=False)
|
|
7664
|
+
|
|
7665
|
+
ModelRedfinSimilarResponse = TypedDict('ModelRedfinSimilarResponse', {
|
|
7666
|
+
'property_id': NotRequired[str],
|
|
7667
|
+
'results': NotRequired[list[ModelRedfinPropertyItem]],
|
|
7668
|
+
}, total=False)
|
|
7669
|
+
|
|
7479
7670
|
ModelReferralsReferralAttributionDoc = TypedDict('ModelReferralsReferralAttributionDoc', {
|
|
7480
7671
|
'campaign': NotRequired[str],
|
|
7481
7672
|
'code': NotRequired[str],
|
|
@@ -8816,6 +9007,7 @@ ModelSpotifyCountryHubContentMeta = TypedDict('ModelSpotifyCountryHubContentMeta
|
|
|
8816
9007
|
'fetchedAt': NotRequired[str],
|
|
8817
9008
|
'itemCount': NotRequired[int],
|
|
8818
9009
|
'operationName': NotRequired[str],
|
|
9010
|
+
'partialErrors': NotRequired[int],
|
|
8819
9011
|
}, total=False)
|
|
8820
9012
|
|
|
8821
9013
|
ModelSpotifyCountryHubContentResponse = TypedDict('ModelSpotifyCountryHubContentResponse', {
|
|
@@ -8850,6 +9042,7 @@ ModelSpotifyCountryHubMeta = TypedDict('ModelSpotifyCountryHubMeta', {
|
|
|
8850
9042
|
'fetchedAt': NotRequired[str],
|
|
8851
9043
|
'itemCount': NotRequired[int],
|
|
8852
9044
|
'operationName': NotRequired[str],
|
|
9045
|
+
'partialErrors': NotRequired[int],
|
|
8853
9046
|
'sectionCount': NotRequired[int],
|
|
8854
9047
|
}, total=False)
|
|
8855
9048
|
|
|
@@ -10697,6 +10890,65 @@ ModelUserUserRotateApikeyResponseDoc = TypedDict('ModelUserUserRotateApikeyRespo
|
|
|
10697
10890
|
'msg': NotRequired[str],
|
|
10698
10891
|
}, total=False)
|
|
10699
10892
|
|
|
10893
|
+
ModelWebScrapeInfo = TypedDict('ModelWebScrapeInfo', {
|
|
10894
|
+
'backend': NotRequired[str],
|
|
10895
|
+
'cache_state': NotRequired[str],
|
|
10896
|
+
'cached_at': NotRequired[str],
|
|
10897
|
+
'escalated': NotRequired[bool],
|
|
10898
|
+
'method': NotRequired[str],
|
|
10899
|
+
}, total=False)
|
|
10900
|
+
|
|
10901
|
+
ModelWebScrapeLink = TypedDict('ModelWebScrapeLink', {
|
|
10902
|
+
'href': NotRequired[str],
|
|
10903
|
+
'rel': NotRequired[str],
|
|
10904
|
+
'text': NotRequired[str],
|
|
10905
|
+
}, total=False)
|
|
10906
|
+
|
|
10907
|
+
ModelWebScrapeMetadata = TypedDict('ModelWebScrapeMetadata', {
|
|
10908
|
+
'author': NotRequired[str],
|
|
10909
|
+
'canonical_url': NotRequired[str],
|
|
10910
|
+
'content_type': NotRequired[str],
|
|
10911
|
+
'description': NotRequired[str],
|
|
10912
|
+
'final_url': NotRequired[str],
|
|
10913
|
+
'image': NotRequired[str],
|
|
10914
|
+
'language': NotRequired[str],
|
|
10915
|
+
'modified_at': NotRequired[str],
|
|
10916
|
+
'published_at': NotRequired[str],
|
|
10917
|
+
'section': NotRequired[str],
|
|
10918
|
+
'site_name': NotRequired[str],
|
|
10919
|
+
'source_url': NotRequired[str],
|
|
10920
|
+
'status_code': NotRequired[int],
|
|
10921
|
+
'title': NotRequired[str],
|
|
10922
|
+
}, total=False)
|
|
10923
|
+
|
|
10924
|
+
ModelWebScrapeOption = TypedDict('ModelWebScrapeOption', {
|
|
10925
|
+
'backend': NotRequired[str],
|
|
10926
|
+
'formats': NotRequired[list[str]],
|
|
10927
|
+
'max_age': NotRequired[int],
|
|
10928
|
+
'only_main_content': NotRequired[bool],
|
|
10929
|
+
'proxy': NotRequired[str],
|
|
10930
|
+
'render': NotRequired[Literal['auto', 'http', 'browser', 'unblocker']],
|
|
10931
|
+
'store_in_cache': NotRequired[bool],
|
|
10932
|
+
'url': Required[str],
|
|
10933
|
+
'wait_for': NotRequired[int],
|
|
10934
|
+
}, total=False)
|
|
10935
|
+
|
|
10936
|
+
ModelWebScrapeResult = TypedDict('ModelWebScrapeResult', {
|
|
10937
|
+
'html': NotRequired[str],
|
|
10938
|
+
'link_details': NotRequired[list[ModelWebScrapeLink]],
|
|
10939
|
+
'links': NotRequired[list[str]],
|
|
10940
|
+
'markdown': NotRequired[str],
|
|
10941
|
+
'metadata': NotRequired[ModelWebScrapeMetadata],
|
|
10942
|
+
'raw_html': NotRequired[str],
|
|
10943
|
+
'scrape': NotRequired[ModelWebScrapeInfo],
|
|
10944
|
+
}, total=False)
|
|
10945
|
+
|
|
10946
|
+
ModelWebScrapeResponseDoc = TypedDict('ModelWebScrapeResponseDoc', {
|
|
10947
|
+
'code': NotRequired[int],
|
|
10948
|
+
'data': NotRequired[ModelWebScrapeResult],
|
|
10949
|
+
'msg': NotRequired[str],
|
|
10950
|
+
}, total=False)
|
|
10951
|
+
|
|
10700
10952
|
ModelYahoofinanceActionEvents = TypedDict('ModelYahoofinanceActionEvents', {
|
|
10701
10953
|
'capital_gains': NotRequired[list[dict[str, Any]]],
|
|
10702
10954
|
'dividends': NotRequired[list[dict[str, Any]]],
|
|
@@ -12448,6 +12700,15 @@ CoinGeckoTrendingParams = TypedDict('CoinGeckoTrendingParams', {
|
|
|
12448
12700
|
'vs_currency': NotRequired[Literal['btc', 'eth', 'ltc', 'bch', 'bnb', 'eos', 'xrp', 'xlm', 'link', 'dot', 'yfi', 'sol', 'usd', 'aed', 'ars', 'aud', 'bdt', 'bhd', 'bmd', 'brl', 'cad', 'chf', 'clp', 'cny', 'czk', 'dkk', 'eur', 'gbp', 'gel', 'hkd', 'huf', 'idr', 'ils', 'inr', 'jpy', 'krw', 'kwd', 'lkr', 'mmk', 'mxn', 'myr', 'ngn', 'nok', 'nzd', 'php', 'pkr', 'pln', 'rub', 'sar', 'sek', 'sgd', 'thb', 'try', 'twd', 'uah', 'vef', 'vnd', 'zar', 'xdr', 'xag', 'xau', 'bits', 'sats']],
|
|
12449
12701
|
}, total=False)
|
|
12450
12702
|
|
|
12703
|
+
WebContactBody = ModelContactContactRequest
|
|
12704
|
+
WebContactResponse = ModelContactContactResponseDoc
|
|
12705
|
+
WebContactParams = TypedDict('WebContactParams', {
|
|
12706
|
+
'_response_type': NotRequired[ResponseType],
|
|
12707
|
+
'_timeout': NotRequired[float],
|
|
12708
|
+
'_headers': NotRequired[Mapping[str, str]],
|
|
12709
|
+
'option': Required[WebContactBody],
|
|
12710
|
+
}, total=False)
|
|
12711
|
+
|
|
12451
12712
|
DatasetsListResponse = ModelDatasetsListResponseDoc
|
|
12452
12713
|
DatasetsListParams = TypedDict('DatasetsListParams', {
|
|
12453
12714
|
'_response_type': NotRequired[ResponseType],
|
|
@@ -12525,6 +12786,15 @@ DatasetsGoogleMapBusinessesSearchParams = TypedDict('DatasetsGoogleMapBusinesses
|
|
|
12525
12786
|
'page_size': NotRequired[int],
|
|
12526
12787
|
}, total=False)
|
|
12527
12788
|
|
|
12789
|
+
WebAntibotCheckBody = ModelDiagnosticsAntibotCheckRequest
|
|
12790
|
+
WebAntibotCheckResponse = ModelDiagnosticsAntibotCheckResponseDoc
|
|
12791
|
+
WebAntibotCheckParams = TypedDict('WebAntibotCheckParams', {
|
|
12792
|
+
'_response_type': NotRequired[ResponseType],
|
|
12793
|
+
'_timeout': NotRequired[float],
|
|
12794
|
+
'_headers': NotRequired[Mapping[str, str]],
|
|
12795
|
+
'request': Required[WebAntibotCheckBody],
|
|
12796
|
+
}, total=False)
|
|
12797
|
+
|
|
12528
12798
|
EBayEbayItemResponse = ModelEbayItemResponseDoc
|
|
12529
12799
|
EBayEbayItemParams = TypedDict('EBayEbayItemParams', {
|
|
12530
12800
|
'_response_type': NotRequired[ResponseType],
|
|
@@ -14706,6 +14976,57 @@ RedditUserPostsParams = TypedDict('RedditUserPostsParams', {
|
|
|
14706
14976
|
'after': NotRequired[str],
|
|
14707
14977
|
}, total=False)
|
|
14708
14978
|
|
|
14979
|
+
RedfinEstimateResponse = ModelRedfinEstimateResponse
|
|
14980
|
+
RedfinEstimateParams = TypedDict('RedfinEstimateParams', {
|
|
14981
|
+
'_response_type': NotRequired[ResponseType],
|
|
14982
|
+
'_timeout': NotRequired[float],
|
|
14983
|
+
'_headers': NotRequired[Mapping[str, str]],
|
|
14984
|
+
'property_id': Required[str],
|
|
14985
|
+
}, total=False)
|
|
14986
|
+
|
|
14987
|
+
RedfinPropertyResponse = ModelRedfinPropertyResponse
|
|
14988
|
+
RedfinPropertyParams = TypedDict('RedfinPropertyParams', {
|
|
14989
|
+
'_response_type': NotRequired[ResponseType],
|
|
14990
|
+
'_timeout': NotRequired[float],
|
|
14991
|
+
'_headers': NotRequired[Mapping[str, str]],
|
|
14992
|
+
'url': NotRequired[str],
|
|
14993
|
+
'property_id': NotRequired[str],
|
|
14994
|
+
'listing_id': NotRequired[str],
|
|
14995
|
+
}, total=False)
|
|
14996
|
+
|
|
14997
|
+
RedfinRegionTrendsResponse = ModelRedfinRegionTrendsResponse
|
|
14998
|
+
RedfinRegionTrendsParams = TypedDict('RedfinRegionTrendsParams', {
|
|
14999
|
+
'_response_type': NotRequired[ResponseType],
|
|
15000
|
+
'_timeout': NotRequired[float],
|
|
15001
|
+
'_headers': NotRequired[Mapping[str, str]],
|
|
15002
|
+
'region_id': Required[int],
|
|
15003
|
+
'region_type': NotRequired[int],
|
|
15004
|
+
}, total=False)
|
|
15005
|
+
|
|
15006
|
+
RedfinSearchResponse = ModelRedfinSearchResponse
|
|
15007
|
+
RedfinSearchParams = TypedDict('RedfinSearchParams', {
|
|
15008
|
+
'_response_type': NotRequired[ResponseType],
|
|
15009
|
+
'_timeout': NotRequired[float],
|
|
15010
|
+
'_headers': NotRequired[Mapping[str, str]],
|
|
15011
|
+
'location': NotRequired[str],
|
|
15012
|
+
'page': NotRequired[int],
|
|
15013
|
+
'region_id': NotRequired[int],
|
|
15014
|
+
'region_type': NotRequired[int],
|
|
15015
|
+
'status': NotRequired[str],
|
|
15016
|
+
'min_price': NotRequired[int],
|
|
15017
|
+
'max_price': NotRequired[int],
|
|
15018
|
+
'min_beds': NotRequired[int],
|
|
15019
|
+
'min_baths': NotRequired[float],
|
|
15020
|
+
}, total=False)
|
|
15021
|
+
|
|
15022
|
+
RedfinSimilarResponse = ModelRedfinSimilarResponse
|
|
15023
|
+
RedfinSimilarParams = TypedDict('RedfinSimilarParams', {
|
|
15024
|
+
'_response_type': NotRequired[ResponseType],
|
|
15025
|
+
'_timeout': NotRequired[float],
|
|
15026
|
+
'_headers': NotRequired[Mapping[str, str]],
|
|
15027
|
+
'property_id': Required[str],
|
|
15028
|
+
}, total=False)
|
|
15029
|
+
|
|
14709
15030
|
ReferralsClickBody = ModelReferralsReferralClickRequestDoc
|
|
14710
15031
|
ReferralsClickResponse = ModelReferralsReferralClickResponseDoc
|
|
14711
15032
|
ReferralsClickParams = TypedDict('ReferralsClickParams', {
|
|
@@ -15989,6 +16310,15 @@ UserMeApiKeysRevealParams = TypedDict('UserMeApiKeysRevealParams', {
|
|
|
15989
16310
|
'id': Required[str],
|
|
15990
16311
|
}, total=False)
|
|
15991
16312
|
|
|
16313
|
+
WebScrapeBody = ModelWebScrapeOption
|
|
16314
|
+
WebScrapeResponse = ModelWebScrapeResponseDoc
|
|
16315
|
+
WebScrapeParams = TypedDict('WebScrapeParams', {
|
|
16316
|
+
'_response_type': NotRequired[ResponseType],
|
|
16317
|
+
'_timeout': NotRequired[float],
|
|
16318
|
+
'_headers': NotRequired[Mapping[str, str]],
|
|
16319
|
+
'scrapeOption': Required[WebScrapeBody],
|
|
16320
|
+
}, total=False)
|
|
16321
|
+
|
|
15992
16322
|
YahooFinanceCalendarsResponse = ModelYahoofinanceCalendarsResponseDoc
|
|
15993
16323
|
YahooFinanceCalendarsParams = TypedDict('YahooFinanceCalendarsParams', {
|
|
15994
16324
|
'_response_type': NotRequired[ResponseType],
|
|
@@ -16599,6 +16929,11 @@ class CoinGeckoGroup:
|
|
|
16599
16929
|
def treasuries(self, **params: Unpack[CoinGeckoTreasuriesParams]) -> CoinGeckoTreasuriesResponse: ...
|
|
16600
16930
|
def trending(self, **params: Unpack[CoinGeckoTrendingParams]) -> CoinGeckoTrendingResponse: ...
|
|
16601
16931
|
|
|
16932
|
+
class WebGroup:
|
|
16933
|
+
def contact(self, **params: Unpack[WebContactParams]) -> WebContactResponse: ...
|
|
16934
|
+
def antibot_check(self, **params: Unpack[WebAntibotCheckParams]) -> WebAntibotCheckResponse: ...
|
|
16935
|
+
def scrape(self, **params: Unpack[WebScrapeParams]) -> WebScrapeResponse: ...
|
|
16936
|
+
|
|
16602
16937
|
class DatasetsGroup:
|
|
16603
16938
|
def list(self, **params: Unpack[DatasetsListParams]) -> DatasetsListResponse: ...
|
|
16604
16939
|
def google_map_businesses_facets(self, **params: Unpack[DatasetsGoogleMapBusinessesFacetsParams]) -> DatasetsGoogleMapBusinessesFacetsResponse: ...
|
|
@@ -16858,6 +17193,13 @@ class RedditGroup:
|
|
|
16858
17193
|
def user_comments(self, **params: Unpack[RedditUserCommentsParams]) -> RedditUserCommentsResponse: ...
|
|
16859
17194
|
def user_posts(self, **params: Unpack[RedditUserPostsParams]) -> RedditUserPostsResponse: ...
|
|
16860
17195
|
|
|
17196
|
+
class RedfinGroup:
|
|
17197
|
+
def estimate(self, **params: Unpack[RedfinEstimateParams]) -> RedfinEstimateResponse: ...
|
|
17198
|
+
def property(self, **params: Unpack[RedfinPropertyParams]) -> RedfinPropertyResponse: ...
|
|
17199
|
+
def region_trends(self, **params: Unpack[RedfinRegionTrendsParams]) -> RedfinRegionTrendsResponse: ...
|
|
17200
|
+
def search(self, **params: Unpack[RedfinSearchParams]) -> RedfinSearchResponse: ...
|
|
17201
|
+
def similar(self, **params: Unpack[RedfinSimilarParams]) -> RedfinSimilarResponse: ...
|
|
17202
|
+
|
|
16861
17203
|
class ReferralsGroup:
|
|
16862
17204
|
def click(self, **params: Unpack[ReferralsClickParams]) -> ReferralsClickResponse: ...
|
|
16863
17205
|
def me(self, **params: Unpack[ReferralsMeParams]) -> ReferralsMeResponse: ...
|
|
@@ -17151,11 +17493,13 @@ OperationId = Literal[
|
|
|
17151
17493
|
'coingecko-token-unlocks',
|
|
17152
17494
|
'coingecko-treasuries',
|
|
17153
17495
|
'coingecko-trending',
|
|
17496
|
+
'contact',
|
|
17154
17497
|
'datasets-list',
|
|
17155
17498
|
'datasets-google-map-businesses-facets',
|
|
17156
17499
|
'datasets-google-map-businesses-item',
|
|
17157
17500
|
'datasets-google-map-businesses-nearby',
|
|
17158
17501
|
'datasets-google-map-businesses-search',
|
|
17502
|
+
'antibot-check',
|
|
17159
17503
|
'ebay-item',
|
|
17160
17504
|
'ebay-search',
|
|
17161
17505
|
'ebay-seller',
|
|
@@ -17380,6 +17724,11 @@ OperationId = Literal[
|
|
|
17380
17724
|
'reddit-trends',
|
|
17381
17725
|
'reddit-user-comments',
|
|
17382
17726
|
'reddit-user-posts',
|
|
17727
|
+
'redfin-estimate',
|
|
17728
|
+
'redfin-property',
|
|
17729
|
+
'redfin-region-trends',
|
|
17730
|
+
'redfin-search',
|
|
17731
|
+
'redfin-similar',
|
|
17383
17732
|
'referrals-click',
|
|
17384
17733
|
'referrals-me',
|
|
17385
17734
|
'referrals-me-events',
|
|
@@ -17504,6 +17853,7 @@ OperationId = Literal[
|
|
|
17504
17853
|
'user-me-api-keys',
|
|
17505
17854
|
'user-me-api-keys-rotate',
|
|
17506
17855
|
'user-me-api-keys-reveal',
|
|
17856
|
+
'web-scrape',
|
|
17507
17857
|
'yahoo-finance-calendars',
|
|
17508
17858
|
'yahoo-finance-calendar',
|
|
17509
17859
|
'yahoo-finance-download',
|
|
@@ -17572,6 +17922,7 @@ class CrawloraClient:
|
|
|
17572
17922
|
brand: BrandGroup
|
|
17573
17923
|
brave: BraveGroup
|
|
17574
17924
|
coin_gecko: CoinGeckoGroup
|
|
17925
|
+
web: WebGroup
|
|
17575
17926
|
datasets: DatasetsGroup
|
|
17576
17927
|
e_bay: EBayGroup
|
|
17577
17928
|
geocoding: GeocodingGroup
|
|
@@ -17587,6 +17938,7 @@ class CrawloraClient:
|
|
|
17587
17938
|
polymarket: PolymarketGroup
|
|
17588
17939
|
product_hunt: ProductHuntGroup
|
|
17589
17940
|
reddit: RedditGroup
|
|
17941
|
+
redfin: RedfinGroup
|
|
17590
17942
|
referrals: ReferralsGroup
|
|
17591
17943
|
rotten_tomatoes: RottenTomatoesGroup
|
|
17592
17944
|
shop_app: ShopAppGroup
|
|
@@ -18679,6 +19031,18 @@ class CrawloraClient:
|
|
|
18679
19031
|
retry_predicate: Callable[[int, BaseException | None], bool] | None = ...,
|
|
18680
19032
|
) -> CoinGeckoTrendingResponse: ...
|
|
18681
19033
|
@overload
|
|
19034
|
+
def operation(
|
|
19035
|
+
self,
|
|
19036
|
+
operation_id: Literal['contact'],
|
|
19037
|
+
params: WebContactParams,
|
|
19038
|
+
*,
|
|
19039
|
+
response_type: ResponseType = ...,
|
|
19040
|
+
timeout: float | None = ...,
|
|
19041
|
+
headers: Mapping[str, str] | None = ...,
|
|
19042
|
+
retries: int | None = ...,
|
|
19043
|
+
retry_predicate: Callable[[int, BaseException | None], bool] | None = ...,
|
|
19044
|
+
) -> WebContactResponse: ...
|
|
19045
|
+
@overload
|
|
18682
19046
|
def operation(
|
|
18683
19047
|
self,
|
|
18684
19048
|
operation_id: Literal['datasets-list'],
|
|
@@ -18739,6 +19103,18 @@ class CrawloraClient:
|
|
|
18739
19103
|
retry_predicate: Callable[[int, BaseException | None], bool] | None = ...,
|
|
18740
19104
|
) -> DatasetsGoogleMapBusinessesSearchResponse: ...
|
|
18741
19105
|
@overload
|
|
19106
|
+
def operation(
|
|
19107
|
+
self,
|
|
19108
|
+
operation_id: Literal['antibot-check'],
|
|
19109
|
+
params: WebAntibotCheckParams,
|
|
19110
|
+
*,
|
|
19111
|
+
response_type: ResponseType = ...,
|
|
19112
|
+
timeout: float | None = ...,
|
|
19113
|
+
headers: Mapping[str, str] | None = ...,
|
|
19114
|
+
retries: int | None = ...,
|
|
19115
|
+
retry_predicate: Callable[[int, BaseException | None], bool] | None = ...,
|
|
19116
|
+
) -> WebAntibotCheckResponse: ...
|
|
19117
|
+
@overload
|
|
18742
19118
|
def operation(
|
|
18743
19119
|
self,
|
|
18744
19120
|
operation_id: Literal['ebay-item'],
|
|
@@ -21427,6 +21803,66 @@ class CrawloraClient:
|
|
|
21427
21803
|
retry_predicate: Callable[[int, BaseException | None], bool] | None = ...,
|
|
21428
21804
|
) -> RedditUserPostsResponse: ...
|
|
21429
21805
|
@overload
|
|
21806
|
+
def operation(
|
|
21807
|
+
self,
|
|
21808
|
+
operation_id: Literal['redfin-estimate'],
|
|
21809
|
+
params: RedfinEstimateParams,
|
|
21810
|
+
*,
|
|
21811
|
+
response_type: ResponseType = ...,
|
|
21812
|
+
timeout: float | None = ...,
|
|
21813
|
+
headers: Mapping[str, str] | None = ...,
|
|
21814
|
+
retries: int | None = ...,
|
|
21815
|
+
retry_predicate: Callable[[int, BaseException | None], bool] | None = ...,
|
|
21816
|
+
) -> RedfinEstimateResponse: ...
|
|
21817
|
+
@overload
|
|
21818
|
+
def operation(
|
|
21819
|
+
self,
|
|
21820
|
+
operation_id: Literal['redfin-property'],
|
|
21821
|
+
params: RedfinPropertyParams = ...,
|
|
21822
|
+
*,
|
|
21823
|
+
response_type: ResponseType = ...,
|
|
21824
|
+
timeout: float | None = ...,
|
|
21825
|
+
headers: Mapping[str, str] | None = ...,
|
|
21826
|
+
retries: int | None = ...,
|
|
21827
|
+
retry_predicate: Callable[[int, BaseException | None], bool] | None = ...,
|
|
21828
|
+
) -> RedfinPropertyResponse: ...
|
|
21829
|
+
@overload
|
|
21830
|
+
def operation(
|
|
21831
|
+
self,
|
|
21832
|
+
operation_id: Literal['redfin-region-trends'],
|
|
21833
|
+
params: RedfinRegionTrendsParams,
|
|
21834
|
+
*,
|
|
21835
|
+
response_type: ResponseType = ...,
|
|
21836
|
+
timeout: float | None = ...,
|
|
21837
|
+
headers: Mapping[str, str] | None = ...,
|
|
21838
|
+
retries: int | None = ...,
|
|
21839
|
+
retry_predicate: Callable[[int, BaseException | None], bool] | None = ...,
|
|
21840
|
+
) -> RedfinRegionTrendsResponse: ...
|
|
21841
|
+
@overload
|
|
21842
|
+
def operation(
|
|
21843
|
+
self,
|
|
21844
|
+
operation_id: Literal['redfin-search'],
|
|
21845
|
+
params: RedfinSearchParams = ...,
|
|
21846
|
+
*,
|
|
21847
|
+
response_type: ResponseType = ...,
|
|
21848
|
+
timeout: float | None = ...,
|
|
21849
|
+
headers: Mapping[str, str] | None = ...,
|
|
21850
|
+
retries: int | None = ...,
|
|
21851
|
+
retry_predicate: Callable[[int, BaseException | None], bool] | None = ...,
|
|
21852
|
+
) -> RedfinSearchResponse: ...
|
|
21853
|
+
@overload
|
|
21854
|
+
def operation(
|
|
21855
|
+
self,
|
|
21856
|
+
operation_id: Literal['redfin-similar'],
|
|
21857
|
+
params: RedfinSimilarParams,
|
|
21858
|
+
*,
|
|
21859
|
+
response_type: ResponseType = ...,
|
|
21860
|
+
timeout: float | None = ...,
|
|
21861
|
+
headers: Mapping[str, str] | None = ...,
|
|
21862
|
+
retries: int | None = ...,
|
|
21863
|
+
retry_predicate: Callable[[int, BaseException | None], bool] | None = ...,
|
|
21864
|
+
) -> RedfinSimilarResponse: ...
|
|
21865
|
+
@overload
|
|
21430
21866
|
def operation(
|
|
21431
21867
|
self,
|
|
21432
21868
|
operation_id: Literal['referrals-click'],
|
|
@@ -22915,6 +23351,18 @@ class CrawloraClient:
|
|
|
22915
23351
|
retry_predicate: Callable[[int, BaseException | None], bool] | None = ...,
|
|
22916
23352
|
) -> UserMeApiKeysRevealResponse: ...
|
|
22917
23353
|
@overload
|
|
23354
|
+
def operation(
|
|
23355
|
+
self,
|
|
23356
|
+
operation_id: Literal['web-scrape'],
|
|
23357
|
+
params: WebScrapeParams,
|
|
23358
|
+
*,
|
|
23359
|
+
response_type: ResponseType = ...,
|
|
23360
|
+
timeout: float | None = ...,
|
|
23361
|
+
headers: Mapping[str, str] | None = ...,
|
|
23362
|
+
retries: int | None = ...,
|
|
23363
|
+
retry_predicate: Callable[[int, BaseException | None], bool] | None = ...,
|
|
23364
|
+
) -> WebScrapeResponse: ...
|
|
23365
|
+
@overload
|
|
22918
23366
|
def operation(
|
|
22919
23367
|
self,
|
|
22920
23368
|
operation_id: Literal['yahoo-finance-calendars'],
|
|
@@ -24583,6 +25031,18 @@ class CrawloraClient:
|
|
|
24583
25031
|
retry_predicate: Callable[[int, BaseException | None], bool] | None = ...,
|
|
24584
25032
|
) -> CoinGeckoTrendingResponse: ...
|
|
24585
25033
|
@overload
|
|
25034
|
+
def request(
|
|
25035
|
+
self,
|
|
25036
|
+
operation_id: Literal['contact'],
|
|
25037
|
+
params: WebContactParams,
|
|
25038
|
+
*,
|
|
25039
|
+
response_type: ResponseType = ...,
|
|
25040
|
+
timeout: float | None = ...,
|
|
25041
|
+
headers: Mapping[str, str] | None = ...,
|
|
25042
|
+
retries: int | None = ...,
|
|
25043
|
+
retry_predicate: Callable[[int, BaseException | None], bool] | None = ...,
|
|
25044
|
+
) -> WebContactResponse: ...
|
|
25045
|
+
@overload
|
|
24586
25046
|
def request(
|
|
24587
25047
|
self,
|
|
24588
25048
|
operation_id: Literal['datasets-list'],
|
|
@@ -24643,6 +25103,18 @@ class CrawloraClient:
|
|
|
24643
25103
|
retry_predicate: Callable[[int, BaseException | None], bool] | None = ...,
|
|
24644
25104
|
) -> DatasetsGoogleMapBusinessesSearchResponse: ...
|
|
24645
25105
|
@overload
|
|
25106
|
+
def request(
|
|
25107
|
+
self,
|
|
25108
|
+
operation_id: Literal['antibot-check'],
|
|
25109
|
+
params: WebAntibotCheckParams,
|
|
25110
|
+
*,
|
|
25111
|
+
response_type: ResponseType = ...,
|
|
25112
|
+
timeout: float | None = ...,
|
|
25113
|
+
headers: Mapping[str, str] | None = ...,
|
|
25114
|
+
retries: int | None = ...,
|
|
25115
|
+
retry_predicate: Callable[[int, BaseException | None], bool] | None = ...,
|
|
25116
|
+
) -> WebAntibotCheckResponse: ...
|
|
25117
|
+
@overload
|
|
24646
25118
|
def request(
|
|
24647
25119
|
self,
|
|
24648
25120
|
operation_id: Literal['ebay-item'],
|
|
@@ -27331,6 +27803,66 @@ class CrawloraClient:
|
|
|
27331
27803
|
retry_predicate: Callable[[int, BaseException | None], bool] | None = ...,
|
|
27332
27804
|
) -> RedditUserPostsResponse: ...
|
|
27333
27805
|
@overload
|
|
27806
|
+
def request(
|
|
27807
|
+
self,
|
|
27808
|
+
operation_id: Literal['redfin-estimate'],
|
|
27809
|
+
params: RedfinEstimateParams,
|
|
27810
|
+
*,
|
|
27811
|
+
response_type: ResponseType = ...,
|
|
27812
|
+
timeout: float | None = ...,
|
|
27813
|
+
headers: Mapping[str, str] | None = ...,
|
|
27814
|
+
retries: int | None = ...,
|
|
27815
|
+
retry_predicate: Callable[[int, BaseException | None], bool] | None = ...,
|
|
27816
|
+
) -> RedfinEstimateResponse: ...
|
|
27817
|
+
@overload
|
|
27818
|
+
def request(
|
|
27819
|
+
self,
|
|
27820
|
+
operation_id: Literal['redfin-property'],
|
|
27821
|
+
params: RedfinPropertyParams = ...,
|
|
27822
|
+
*,
|
|
27823
|
+
response_type: ResponseType = ...,
|
|
27824
|
+
timeout: float | None = ...,
|
|
27825
|
+
headers: Mapping[str, str] | None = ...,
|
|
27826
|
+
retries: int | None = ...,
|
|
27827
|
+
retry_predicate: Callable[[int, BaseException | None], bool] | None = ...,
|
|
27828
|
+
) -> RedfinPropertyResponse: ...
|
|
27829
|
+
@overload
|
|
27830
|
+
def request(
|
|
27831
|
+
self,
|
|
27832
|
+
operation_id: Literal['redfin-region-trends'],
|
|
27833
|
+
params: RedfinRegionTrendsParams,
|
|
27834
|
+
*,
|
|
27835
|
+
response_type: ResponseType = ...,
|
|
27836
|
+
timeout: float | None = ...,
|
|
27837
|
+
headers: Mapping[str, str] | None = ...,
|
|
27838
|
+
retries: int | None = ...,
|
|
27839
|
+
retry_predicate: Callable[[int, BaseException | None], bool] | None = ...,
|
|
27840
|
+
) -> RedfinRegionTrendsResponse: ...
|
|
27841
|
+
@overload
|
|
27842
|
+
def request(
|
|
27843
|
+
self,
|
|
27844
|
+
operation_id: Literal['redfin-search'],
|
|
27845
|
+
params: RedfinSearchParams = ...,
|
|
27846
|
+
*,
|
|
27847
|
+
response_type: ResponseType = ...,
|
|
27848
|
+
timeout: float | None = ...,
|
|
27849
|
+
headers: Mapping[str, str] | None = ...,
|
|
27850
|
+
retries: int | None = ...,
|
|
27851
|
+
retry_predicate: Callable[[int, BaseException | None], bool] | None = ...,
|
|
27852
|
+
) -> RedfinSearchResponse: ...
|
|
27853
|
+
@overload
|
|
27854
|
+
def request(
|
|
27855
|
+
self,
|
|
27856
|
+
operation_id: Literal['redfin-similar'],
|
|
27857
|
+
params: RedfinSimilarParams,
|
|
27858
|
+
*,
|
|
27859
|
+
response_type: ResponseType = ...,
|
|
27860
|
+
timeout: float | None = ...,
|
|
27861
|
+
headers: Mapping[str, str] | None = ...,
|
|
27862
|
+
retries: int | None = ...,
|
|
27863
|
+
retry_predicate: Callable[[int, BaseException | None], bool] | None = ...,
|
|
27864
|
+
) -> RedfinSimilarResponse: ...
|
|
27865
|
+
@overload
|
|
27334
27866
|
def request(
|
|
27335
27867
|
self,
|
|
27336
27868
|
operation_id: Literal['referrals-click'],
|
|
@@ -28819,6 +29351,18 @@ class CrawloraClient:
|
|
|
28819
29351
|
retry_predicate: Callable[[int, BaseException | None], bool] | None = ...,
|
|
28820
29352
|
) -> UserMeApiKeysRevealResponse: ...
|
|
28821
29353
|
@overload
|
|
29354
|
+
def request(
|
|
29355
|
+
self,
|
|
29356
|
+
operation_id: Literal['web-scrape'],
|
|
29357
|
+
params: WebScrapeParams,
|
|
29358
|
+
*,
|
|
29359
|
+
response_type: ResponseType = ...,
|
|
29360
|
+
timeout: float | None = ...,
|
|
29361
|
+
headers: Mapping[str, str] | None = ...,
|
|
29362
|
+
retries: int | None = ...,
|
|
29363
|
+
retry_predicate: Callable[[int, BaseException | None], bool] | None = ...,
|
|
29364
|
+
) -> WebScrapeResponse: ...
|
|
29365
|
+
@overload
|
|
28822
29366
|
def request(
|
|
28823
29367
|
self,
|
|
28824
29368
|
operation_id: Literal['yahoo-finance-calendars'],
|
|
@@ -92,6 +92,17 @@ OPERATIONS = {'airbnb-room': {'bodyParam': None,
|
|
|
92
92
|
'produces': ['application/json'],
|
|
93
93
|
'queryParams': [],
|
|
94
94
|
'security': ['ApiKeyAuth']},
|
|
95
|
+
'antibot-check': {'bodyParam': 'request',
|
|
96
|
+
'bodyRequired': True,
|
|
97
|
+
'consumes': ['application/json'],
|
|
98
|
+
'formParams': [],
|
|
99
|
+
'id': 'antibot-check',
|
|
100
|
+
'method': 'POST',
|
|
101
|
+
'path': '/diagnostics/antibot-check',
|
|
102
|
+
'pathParams': [],
|
|
103
|
+
'produces': ['application/json'],
|
|
104
|
+
'queryParams': [],
|
|
105
|
+
'security': ['ApiKeyAuth']},
|
|
95
106
|
'apple-podcasts-charts': {'bodyParam': None,
|
|
96
107
|
'bodyRequired': False,
|
|
97
108
|
'consumes': ['application/json'],
|
|
@@ -2413,6 +2424,17 @@ OPERATIONS = {'airbnb-room': {'bodyParam': None,
|
|
|
2413
2424
|
'name': 'vs_currency',
|
|
2414
2425
|
'type': 'string'}],
|
|
2415
2426
|
'security': ['ApiKeyAuth']},
|
|
2427
|
+
'contact': {'bodyParam': 'option',
|
|
2428
|
+
'bodyRequired': True,
|
|
2429
|
+
'consumes': ['application/json'],
|
|
2430
|
+
'formParams': [],
|
|
2431
|
+
'id': 'contact',
|
|
2432
|
+
'method': 'POST',
|
|
2433
|
+
'path': '/contact',
|
|
2434
|
+
'pathParams': [],
|
|
2435
|
+
'produces': ['application/json'],
|
|
2436
|
+
'queryParams': [],
|
|
2437
|
+
'security': ['ApiKeyAuth']},
|
|
2416
2438
|
'datasets-google-map-businesses-facets': {'bodyParam': None,
|
|
2417
2439
|
'bodyRequired': False,
|
|
2418
2440
|
'consumes': ['application/json'],
|
|
@@ -5938,6 +5960,73 @@ OPERATIONS = {'airbnb-room': {'bodyParam': None,
|
|
|
5938
5960
|
'queryParams': [{'in': 'query', 'name': 'limit', 'type': 'integer'},
|
|
5939
5961
|
{'in': 'query', 'name': 'after', 'type': 'string'}],
|
|
5940
5962
|
'security': ['ApiKeyAuth']},
|
|
5963
|
+
'redfin-estimate': {'bodyParam': None,
|
|
5964
|
+
'bodyRequired': False,
|
|
5965
|
+
'consumes': ['application/json'],
|
|
5966
|
+
'formParams': [],
|
|
5967
|
+
'id': 'redfin-estimate',
|
|
5968
|
+
'method': 'GET',
|
|
5969
|
+
'path': '/redfin/estimate',
|
|
5970
|
+
'pathParams': [],
|
|
5971
|
+
'produces': ['application/json'],
|
|
5972
|
+
'queryParams': [{'in': 'query', 'name': 'property_id', 'required': True, 'type': 'string'}],
|
|
5973
|
+
'security': ['ApiKeyAuth']},
|
|
5974
|
+
'redfin-property': {'bodyParam': None,
|
|
5975
|
+
'bodyRequired': False,
|
|
5976
|
+
'consumes': ['application/json'],
|
|
5977
|
+
'formParams': [],
|
|
5978
|
+
'id': 'redfin-property',
|
|
5979
|
+
'method': 'GET',
|
|
5980
|
+
'path': '/redfin/property',
|
|
5981
|
+
'pathParams': [],
|
|
5982
|
+
'produces': ['application/json'],
|
|
5983
|
+
'queryParams': [{'in': 'query', 'name': 'url', 'type': 'string'},
|
|
5984
|
+
{'in': 'query', 'name': 'property_id', 'type': 'string'},
|
|
5985
|
+
{'in': 'query', 'name': 'listing_id', 'type': 'string'}],
|
|
5986
|
+
'security': ['ApiKeyAuth']},
|
|
5987
|
+
'redfin-region-trends': {'bodyParam': None,
|
|
5988
|
+
'bodyRequired': False,
|
|
5989
|
+
'consumes': ['application/json'],
|
|
5990
|
+
'formParams': [],
|
|
5991
|
+
'id': 'redfin-region-trends',
|
|
5992
|
+
'method': 'GET',
|
|
5993
|
+
'path': '/redfin/region-trends',
|
|
5994
|
+
'pathParams': [],
|
|
5995
|
+
'produces': ['application/json'],
|
|
5996
|
+
'queryParams': [{'in': 'query', 'name': 'region_id', 'required': True, 'type': 'integer'},
|
|
5997
|
+
{'in': 'query', 'name': 'region_type', 'type': 'integer'}],
|
|
5998
|
+
'security': ['ApiKeyAuth']},
|
|
5999
|
+
'redfin-search': {'bodyParam': None,
|
|
6000
|
+
'bodyRequired': False,
|
|
6001
|
+
'consumes': ['application/json'],
|
|
6002
|
+
'formParams': [],
|
|
6003
|
+
'id': 'redfin-search',
|
|
6004
|
+
'method': 'GET',
|
|
6005
|
+
'paginatable': True,
|
|
6006
|
+
'path': '/redfin/search',
|
|
6007
|
+
'pathParams': [],
|
|
6008
|
+
'produces': ['application/json'],
|
|
6009
|
+
'queryParams': [{'in': 'query', 'name': 'location', 'type': 'string'},
|
|
6010
|
+
{'in': 'query', 'name': 'page', 'type': 'integer'},
|
|
6011
|
+
{'in': 'query', 'name': 'region_id', 'type': 'integer'},
|
|
6012
|
+
{'in': 'query', 'name': 'region_type', 'type': 'integer'},
|
|
6013
|
+
{'in': 'query', 'name': 'status', 'type': 'string'},
|
|
6014
|
+
{'in': 'query', 'name': 'min_price', 'type': 'integer'},
|
|
6015
|
+
{'in': 'query', 'name': 'max_price', 'type': 'integer'},
|
|
6016
|
+
{'in': 'query', 'name': 'min_beds', 'type': 'integer'},
|
|
6017
|
+
{'in': 'query', 'name': 'min_baths', 'type': 'number'}],
|
|
6018
|
+
'security': ['ApiKeyAuth']},
|
|
6019
|
+
'redfin-similar': {'bodyParam': None,
|
|
6020
|
+
'bodyRequired': False,
|
|
6021
|
+
'consumes': ['application/json'],
|
|
6022
|
+
'formParams': [],
|
|
6023
|
+
'id': 'redfin-similar',
|
|
6024
|
+
'method': 'GET',
|
|
6025
|
+
'path': '/redfin/similar',
|
|
6026
|
+
'pathParams': [],
|
|
6027
|
+
'produces': ['application/json'],
|
|
6028
|
+
'queryParams': [{'in': 'query', 'name': 'property_id', 'required': True, 'type': 'string'}],
|
|
6029
|
+
'security': ['ApiKeyAuth']},
|
|
5941
6030
|
'referrals-click': {'bodyParam': 'request',
|
|
5942
6031
|
'bodyRequired': True,
|
|
5943
6032
|
'consumes': ['application/json'],
|
|
@@ -7763,6 +7852,17 @@ OPERATIONS = {'airbnb-room': {'bodyParam': None,
|
|
|
7763
7852
|
'produces': ['application/json'],
|
|
7764
7853
|
'queryParams': [],
|
|
7765
7854
|
'security': ['JWTAuth']},
|
|
7855
|
+
'web-scrape': {'bodyParam': 'scrapeOption',
|
|
7856
|
+
'bodyRequired': True,
|
|
7857
|
+
'consumes': ['application/json'],
|
|
7858
|
+
'formParams': [],
|
|
7859
|
+
'id': 'web-scrape',
|
|
7860
|
+
'method': 'POST',
|
|
7861
|
+
'path': '/web/scrape',
|
|
7862
|
+
'pathParams': [],
|
|
7863
|
+
'produces': ['application/json'],
|
|
7864
|
+
'queryParams': [],
|
|
7865
|
+
'security': ['ApiKeyAuth']},
|
|
7766
7866
|
'yahoo-finance-calendar': {'bodyParam': None,
|
|
7767
7867
|
'bodyRequired': False,
|
|
7768
7868
|
'consumes': ['application/json'],
|
|
@@ -8762,6 +8862,11 @@ GROUPS = {'airbnb': {'room': 'airbnb-room',
|
|
|
8762
8862
|
'trends': 'reddit-trends',
|
|
8763
8863
|
'user_comments': 'reddit-user-comments',
|
|
8764
8864
|
'user_posts': 'reddit-user-posts'},
|
|
8865
|
+
'redfin': {'estimate': 'redfin-estimate',
|
|
8866
|
+
'property': 'redfin-property',
|
|
8867
|
+
'region_trends': 'redfin-region-trends',
|
|
8868
|
+
'search': 'redfin-search',
|
|
8869
|
+
'similar': 'redfin-similar'},
|
|
8765
8870
|
'referrals': {'click': 'referrals-click', 'me': 'referrals-me', 'me_events': 'referrals-me-events'},
|
|
8766
8871
|
'rotten_tomatoes': {'rottentomatoes_browse_movies': 'rottentomatoes-browse-movies',
|
|
8767
8872
|
'rottentomatoes_browse_tv': 'rottentomatoes-browse-tv',
|
|
@@ -8883,6 +8988,7 @@ GROUPS = {'airbnb': {'room': 'airbnb-room',
|
|
|
8883
8988
|
'me_api_keys': 'user-me-api-keys',
|
|
8884
8989
|
'me_api_keys_reveal': 'user-me-api-keys-reveal',
|
|
8885
8990
|
'me_api_keys_rotate': 'user-me-api-keys-rotate'},
|
|
8991
|
+
'web': {'antibot_check': 'antibot-check', 'contact': 'contact', 'scrape': 'web-scrape'},
|
|
8886
8992
|
'yahoo_finance': {'calendar': 'yahoo-finance-calendar',
|
|
8887
8993
|
'calendars': 'yahoo-finance-calendars',
|
|
8888
8994
|
'download': 'yahoo-finance-download',
|
|
@@ -8937,7 +9043,7 @@ GROUPS = {'airbnb': {'room': 'airbnb-room',
|
|
|
8937
9043
|
'video': 'youtube-video'},
|
|
8938
9044
|
'zillow': {'autocomplete': 'zillow-autocomplete', 'property': 'zillow-property', 'search': 'zillow-search'}}
|
|
8939
9045
|
|
|
8940
|
-
OPERATION_COUNT =
|
|
9046
|
+
OPERATION_COUNT = 499
|
|
8941
9047
|
|
|
8942
9048
|
class OperationId:
|
|
8943
9049
|
AIRBNB_ROOM = 'airbnb-room'
|
|
@@ -9252,6 +9358,11 @@ class OperationId:
|
|
|
9252
9358
|
REDDIT_TRENDS = 'reddit-trends'
|
|
9253
9359
|
REDDIT_USER_COMMENTS = 'reddit-user-comments'
|
|
9254
9360
|
REDDIT_USER_POSTS = 'reddit-user-posts'
|
|
9361
|
+
REDFIN_ESTIMATE = 'redfin-estimate'
|
|
9362
|
+
REDFIN_PROPERTY = 'redfin-property'
|
|
9363
|
+
REDFIN_REGION_TRENDS = 'redfin-region-trends'
|
|
9364
|
+
REDFIN_SEARCH = 'redfin-search'
|
|
9365
|
+
REDFIN_SIMILAR = 'redfin-similar'
|
|
9255
9366
|
REFERRALS_CLICK = 'referrals-click'
|
|
9256
9367
|
REFERRALS_ME = 'referrals-me'
|
|
9257
9368
|
REFERRALS_ME_EVENTS = 'referrals-me-events'
|
|
@@ -9376,6 +9487,9 @@ class OperationId:
|
|
|
9376
9487
|
USER_ME_API_KEYS = 'user-me-api-keys'
|
|
9377
9488
|
USER_ME_API_KEYS_REVEAL = 'user-me-api-keys-reveal'
|
|
9378
9489
|
USER_ME_API_KEYS_ROTATE = 'user-me-api-keys-rotate'
|
|
9490
|
+
WEB_ANTIBOT_CHECK = 'antibot-check'
|
|
9491
|
+
WEB_CONTACT = 'contact'
|
|
9492
|
+
WEB_SCRAPE = 'web-scrape'
|
|
9379
9493
|
YAHOO_FINANCE_CALENDAR = 'yahoo-finance-calendar'
|
|
9380
9494
|
YAHOO_FINANCE_CALENDARS = 'yahoo-finance-calendars'
|
|
9381
9495
|
YAHOO_FINANCE_DOWNLOAD = 'yahoo-finance-download'
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: crawlora
|
|
3
|
-
Version: 1.
|
|
3
|
+
Version: 1.8.0.dev1
|
|
4
4
|
Summary: Official Python SDK for the Crawlora web-scraping API: typed grouped and dynamic operation calls for every public endpoint, with retries, pagination, hooks, and an async client.
|
|
5
5
|
Author: Crawlora
|
|
6
6
|
License-Expression: MIT
|
|
@@ -27,7 +27,7 @@ Dynamic: license-file
|
|
|
27
27
|
# Crawlora Python SDK
|
|
28
28
|
|
|
29
29
|
Python client for the public Crawlora API. Use it to call Crawlora scraping,
|
|
30
|
-
search, social, marketplace, media, maps, finance, brand, and usage endpoints
|
|
30
|
+
search, social, marketplace, media, maps, finance, prediction-market, brand, and usage endpoints
|
|
31
31
|
with generated type stubs for editor and type-checker support.
|
|
32
32
|
|
|
33
33
|
- Runtime: Python 3.10+
|
|
@@ -38,7 +38,7 @@ with generated type stubs for editor and type-checker support.
|
|
|
38
38
|
## Install
|
|
39
39
|
|
|
40
40
|
Published on [PyPI](https://pypi.org/project/crawlora/). The current release is a
|
|
41
|
-
prerelease (`1.
|
|
41
|
+
prerelease (`1.7.0.dev1`), so install it with `--pre`:
|
|
42
42
|
|
|
43
43
|
```sh
|
|
44
44
|
pip install --pre crawlora
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
Generated from `openapi/public.json`. Deprecated, admin, and internal operations are excluded from this SDK contract.
|
|
4
4
|
|
|
5
|
-
Total operations: `
|
|
5
|
+
Total operations: `499`
|
|
6
6
|
|
|
7
7
|
| Group | SDK method | Operation ID | HTTP | Params | Auth | Response | Notes |
|
|
8
8
|
| --- | --- | --- | --- | --- | --- | --- | --- |
|
|
@@ -89,6 +89,9 @@ Total operations: `491`
|
|
|
89
89
|
| coin_gecko | `coin_gecko.token_unlocks` | `coingecko-token-unlocks` | `GET /coingecko/token-unlocks` | `limit` (query int) | `ApiKeyAuth` | `CoinGeckoTokenUnlocksResponse` | |
|
|
90
90
|
| coin_gecko | `coin_gecko.treasuries` | `coingecko-treasuries` | `GET /coingecko/treasuries` | `asset` (query Literal['all', 'bitcoin', 'ethereum', 'solana', 'bnb', 'xrp', 'tron'])<br>`holder_type` (query Literal['all', 'companies', 'governments'])<br>`limit` (query int)<br>`vs_currency` (query Literal['btc', 'eth', 'ltc', 'bch', 'bnb', 'eos', 'xrp', 'xlm', 'link', 'dot', 'yfi', 'sol', 'usd', 'aed', 'ars', 'aud', 'bdt', 'bhd', 'bmd', 'brl', 'cad', 'chf', 'clp', 'cny', 'czk', 'dkk', 'eur', 'gbp', 'gel', 'hkd', 'huf', 'idr', 'ils', 'inr', 'jpy', 'krw', 'kwd', 'lkr', 'mmk', 'mxn', 'myr', 'ngn', 'nok', 'nzd', 'php', 'pkr', 'pln', 'rub', 'sar', 'sek', 'sgd', 'thb', 'try', 'twd', 'uah', 'vef', 'vnd', 'zar', 'xdr', 'xag', 'xau', 'bits', 'sats']) | `ApiKeyAuth` | `CoinGeckoTreasuriesResponse` | |
|
|
91
91
|
| coin_gecko | `coin_gecko.trending` | `coingecko-trending` | `GET /coingecko/trending` | `limit` (query int)<br>`vs_currency` (query Literal['btc', 'eth', 'ltc', 'bch', 'bnb', 'eos', 'xrp', 'xlm', 'link', 'dot', 'yfi', 'sol', 'usd', 'aed', 'ars', 'aud', 'bdt', 'bhd', 'bmd', 'brl', 'cad', 'chf', 'clp', 'cny', 'czk', 'dkk', 'eur', 'gbp', 'gel', 'hkd', 'huf', 'idr', 'ils', 'inr', 'jpy', 'krw', 'kwd', 'lkr', 'mmk', 'mxn', 'myr', 'ngn', 'nok', 'nzd', 'php', 'pkr', 'pln', 'rub', 'sar', 'sek', 'sgd', 'thb', 'try', 'twd', 'uah', 'vef', 'vnd', 'zar', 'xdr', 'xag', 'xau', 'bits', 'sats']) | `ApiKeyAuth` | `CoinGeckoTrendingResponse` | |
|
|
92
|
+
| web | `web.contact` | `contact` | `POST /contact` | `option` (body str required) | `ApiKeyAuth` | `WebContactResponse` | |
|
|
93
|
+
| web | `web.antibot_check` | `antibot-check` | `POST /diagnostics/antibot-check` | `request` (body str required) | `ApiKeyAuth` | `WebAntibotCheckResponse` | |
|
|
94
|
+
| web | `web.scrape` | `web-scrape` | `POST /web/scrape` | `scrapeOption` (body str required) | `ApiKeyAuth` | `WebScrapeResponse` | |
|
|
92
95
|
| datasets | `datasets.list` | `datasets-list` | `GET /datasets` | none | `ApiKeyAuth` | `DatasetsListResponse` | |
|
|
93
96
|
| datasets | `datasets.google_map_businesses_facets` | `datasets-google-map-businesses-facets` | `GET /datasets/google-map-businesses/facets` | `facet` (query str required)<br>`q` (query str)<br>`category` (query str)<br>`country` (query str)<br>`state` (query str)<br>`county` (query str)<br>`city` (query str)<br>`town` (query str)<br>`min_rating` (query float)<br>`min_review_count` (query int)<br>`has_website` (query bool)<br>`has_phone` (query bool)<br>`lat` (query float)<br>`lon` (query float)<br>`radius_m` (query int)<br>`sort` (query str) | `ApiKeyAuth` | `DatasetsGoogleMapBusinessesFacetsResponse` | |
|
|
94
97
|
| datasets | `datasets.google_map_businesses_item` | `datasets-google-map-businesses-item` | `GET /datasets/google-map-businesses/items/{place_id}` | `place_id` (path str required) | `ApiKeyAuth` | `DatasetsGoogleMapBusinessesItemResponse` | |
|
|
@@ -318,6 +321,11 @@ Total operations: `491`
|
|
|
318
321
|
| reddit | `reddit.trends` | `reddit-trends` | `GET /reddit/trends` | `sort` (query Literal['hot', 'new', 'rising', 'top'])<br>`time` (query Literal['hour', 'day', 'week', 'month', 'year', 'all'])<br>`limit` (query int)<br>`after` (query str) | `ApiKeyAuth` | `RedditTrendsResponse` | |
|
|
319
322
|
| reddit | `reddit.user_comments` | `reddit-user-comments` | `GET /reddit/user/{username}/comments` | `username` (path str required)<br>`limit` (query int)<br>`after` (query str) | `ApiKeyAuth` | `RedditUserCommentsResponse` | |
|
|
320
323
|
| reddit | `reddit.user_posts` | `reddit-user-posts` | `GET /reddit/user/{username}/posts` | `username` (path str required)<br>`limit` (query int)<br>`after` (query str) | `ApiKeyAuth` | `RedditUserPostsResponse` | |
|
|
324
|
+
| redfin | `redfin.estimate` | `redfin-estimate` | `GET /redfin/estimate` | `property_id` (query str required) | `ApiKeyAuth` | `RedfinEstimateResponse` | |
|
|
325
|
+
| redfin | `redfin.property` | `redfin-property` | `GET /redfin/property` | `url` (query str)<br>`property_id` (query str)<br>`listing_id` (query str) | `ApiKeyAuth` | `RedfinPropertyResponse` | |
|
|
326
|
+
| redfin | `redfin.region_trends` | `redfin-region-trends` | `GET /redfin/region-trends` | `region_id` (query int required)<br>`region_type` (query int) | `ApiKeyAuth` | `RedfinRegionTrendsResponse` | |
|
|
327
|
+
| redfin | `redfin.search` | `redfin-search` | `GET /redfin/search` | `location` (query str)<br>`page` (query int)<br>`region_id` (query int)<br>`region_type` (query int)<br>`status` (query str)<br>`min_price` (query int)<br>`max_price` (query int)<br>`min_beds` (query int)<br>`min_baths` (query float) | `ApiKeyAuth` | `RedfinSearchResponse` | |
|
|
328
|
+
| redfin | `redfin.similar` | `redfin-similar` | `GET /redfin/similar` | `property_id` (query str required) | `ApiKeyAuth` | `RedfinSimilarResponse` | |
|
|
321
329
|
| referrals | `referrals.click` | `referrals-click` | `POST /referrals/click` | `request` (body str required) | none | `ReferralsClickResponse` | |
|
|
322
330
|
| referrals | `referrals.me` | `referrals-me` | `GET /referrals/me` | none | `JWTAuth` | `ReferralsMeResponse` | |
|
|
323
331
|
| referrals | `referrals.me_events` | `referrals-me-events` | `GET /referrals/me/events` | `limit` (query int) | `JWTAuth` | `ReferralsMeEventsResponse` | |
|
|
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "crawlora"
|
|
7
|
-
version = "1.
|
|
7
|
+
version = "1.8.0.dev1"
|
|
8
8
|
description = "Official Python SDK for the Crawlora web-scraping API: typed grouped and dynamic operation calls for every public endpoint, with retries, pagination, hooks, and an async client."
|
|
9
9
|
readme = "README.md"
|
|
10
10
|
requires-python = ">=3.10"
|
|
@@ -267,7 +267,7 @@ class CrawloraClientTest(unittest.TestCase):
|
|
|
267
267
|
self.assertIs(raised.exception.__cause__, cause)
|
|
268
268
|
|
|
269
269
|
def test_operation_metadata_count(self):
|
|
270
|
-
self.assertEqual(OPERATION_COUNT,
|
|
270
|
+
self.assertEqual(OPERATION_COUNT, 499)
|
|
271
271
|
|
|
272
272
|
def test_deprecated_endpoints_are_not_generated(self):
|
|
273
273
|
self.assertFalse(hasattr(CrawloraClient(api_key="api_test", base_url=self.base_url).google, "lens"))
|
|
@@ -296,7 +296,7 @@ class CrawloraClientTest(unittest.TestCase):
|
|
|
296
296
|
recipes_doc = root.joinpath("docs", "recipes.md").read_text()
|
|
297
297
|
|
|
298
298
|
for expected in [
|
|
299
|
-
"Total operations: `
|
|
299
|
+
"Total operations: `499`",
|
|
300
300
|
"`bing-search`",
|
|
301
301
|
"`GET /bing/search`",
|
|
302
302
|
"`bing.search`",
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|