@apifreaks/openapi-specs 0.1.0 → 0.1.2

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.
Files changed (108) hide show
  1. package/dist/index.cjs +133 -2
  2. package/dist/index.d.cts +140 -3
  3. package/dist/index.d.ts +140 -3
  4. package/dist/index.js +131 -2
  5. package/dist/specs/commodity/commodity-fluctuation.yaml +225 -0
  6. package/dist/specs/commodity/commodity-prices.yaml +236 -0
  7. package/dist/specs/commodity/commodity-symbols.yaml +159 -0
  8. package/dist/specs/commodity/commodity-time-series.yaml +238 -0
  9. package/dist/specs/commodity/historical-commodity-prices.yaml +208 -0
  10. package/dist/specs/currency/currency-converter.yaml +193 -0
  11. package/dist/specs/currency/currency-fluctuation.yaml +211 -0
  12. package/dist/specs/currency/currency-historical-data-limit.yaml +112 -0
  13. package/dist/specs/currency/currency-rate.yaml +173 -0
  14. package/dist/specs/currency/currency-supported.yaml +176 -0
  15. package/dist/specs/currency/currency-symbols.yaml +115 -0
  16. package/dist/specs/currency/currency-time-series.yaml +232 -0
  17. package/dist/specs/currency/geolocalized-currency-conversion.yaml +214 -0
  18. package/dist/specs/currency/historical-currency-converter.yaml +195 -0
  19. package/dist/specs/currency/historical-currency-rate.yaml +180 -0
  20. package/dist/specs/dns/bulk-dns-lookup.yaml +484 -0
  21. package/dist/specs/dns/dns-history-lookup.yaml +451 -0
  22. package/dist/specs/dns/dns-lookup.yaml +360 -0
  23. package/dist/specs/dns/reverse-dns-lookup.yaml +338 -0
  24. package/dist/specs/domain/bulk-domain-checker.yaml +198 -0
  25. package/dist/specs/domain/domain-search-with-suggestions.yaml +196 -0
  26. package/dist/specs/domain/domain-search.yaml +149 -0
  27. package/dist/specs/domain/subdomain-lookup.yaml +251 -0
  28. package/dist/specs/email-validation/bulk-email-validation.yaml +403 -0
  29. package/dist/specs/email-validation/email-checker.yaml +451 -0
  30. package/dist/specs/financial/bulk-vat-rates-country.yaml +250 -0
  31. package/dist/specs/financial/financial-apis-supported-countries.yaml +152 -0
  32. package/dist/specs/financial/iban-validation.yaml +270 -0
  33. package/dist/specs/financial/swift-code-finder.yaml +146 -0
  34. package/dist/specs/financial/swift-code-lookup.yaml +156 -0
  35. package/dist/specs/financial/vat-number-validation.yaml +205 -0
  36. package/dist/specs/financial/vat-rates-by-ip.yaml +200 -0
  37. package/dist/specs/financial/vat-rates-country.yaml +212 -0
  38. package/dist/specs/general/usage-credits.yaml +188 -0
  39. package/dist/specs/geocoding/forward-geocoding.yaml +292 -0
  40. package/dist/specs/geocoding/reverse-geocoding.yaml +237 -0
  41. package/dist/specs/geodb/administrative-units-details.yaml +180 -0
  42. package/dist/specs/geodb/administrative-units-levels.yaml +140 -0
  43. package/dist/specs/geodb/administrative-units.yaml +168 -0
  44. package/dist/specs/geodb/cities.yaml +209 -0
  45. package/dist/specs/geodb/countries-details.yaml +207 -0
  46. package/dist/specs/geodb/countries.yaml +199 -0
  47. package/dist/specs/geodb/flags-supported.yaml +119 -0
  48. package/dist/specs/geodb/flags.yaml +170 -0
  49. package/dist/specs/geodb/regions.yaml +76 -0
  50. package/dist/specs/geodb/subregions.yaml +158 -0
  51. package/dist/specs/ip-intelligence/bulk-ip-lookup.yaml +895 -0
  52. package/dist/specs/ip-intelligence/bulk-ip-threat-intelligence.yaml +310 -0
  53. package/dist/specs/ip-intelligence/ip-locator.yaml +708 -0
  54. package/dist/specs/ip-intelligence/ip-threat-intelligence.yaml +230 -0
  55. package/dist/specs/other/astronomy-data.yaml +632 -0
  56. package/dist/specs/pdf/delete-pdf-page.yaml +193 -0
  57. package/dist/specs/pdf/linearize-pdf.yaml +187 -0
  58. package/dist/specs/pdf/merge-pdf.yaml +193 -0
  59. package/dist/specs/pdf/pdf-compress.yaml +208 -0
  60. package/dist/specs/pdf/pdf-decrypt.yaml +202 -0
  61. package/dist/specs/pdf/pdf-encrypt.yaml +213 -0
  62. package/dist/specs/pdf/pdf-extract-pages.yaml +199 -0
  63. package/dist/specs/pdf/pdf-file-status.yaml +148 -0
  64. package/dist/specs/pdf/pdf-file.yaml +136 -0
  65. package/dist/specs/pdf/pdf-files.yaml +85 -0
  66. package/dist/specs/pdf/pdf-resource-download.yaml +117 -0
  67. package/dist/specs/pdf/pdf-resource-upload-binary.yaml +152 -0
  68. package/dist/specs/pdf/pdf-resource-upload.yaml +163 -0
  69. package/dist/specs/pdf/pdf-restrict.yaml +246 -0
  70. package/dist/specs/pdf/pdf-split-pages.yaml +208 -0
  71. package/dist/specs/pdf/pdf-task-status.yaml +187 -0
  72. package/dist/specs/pdf/pdf-to-image.yaml +844 -0
  73. package/dist/specs/pdf/pdf-unrestrict.yaml +221 -0
  74. package/dist/specs/pdf/rotate-pdf-pages.yaml +207 -0
  75. package/dist/specs/phone-validation/bulk-phone-number-validation.yaml +374 -0
  76. package/dist/specs/phone-validation/phone-number-validation.yaml +344 -0
  77. package/dist/specs/scraper/web-scraper.yaml +479 -0
  78. package/dist/specs/screenshot/bulk-screenshot.yaml +728 -0
  79. package/dist/specs/screenshot/website-screenshot.yaml +822 -0
  80. package/dist/specs/ssl/ssl-certificate-chain-lookup.yaml +593 -0
  81. package/dist/specs/ssl/ssl-certificate-lookup.yaml +478 -0
  82. package/dist/specs/timezone/timezone-converter.yaml +249 -0
  83. package/dist/specs/timezone/timezone-lookup.yaml +712 -0
  84. package/dist/specs/user-agent/bulk-user-agent-parser.yaml +340 -0
  85. package/dist/specs/user-agent/user-agent-parser.yaml +271 -0
  86. package/dist/specs/weather/air-quality.yaml +590 -0
  87. package/dist/specs/weather/bulk-live-weather.yaml +654 -0
  88. package/dist/specs/weather/flood-forecast.yaml +519 -0
  89. package/dist/specs/weather/historical-weather.yaml +842 -0
  90. package/dist/specs/weather/live-weather.yaml +633 -0
  91. package/dist/specs/weather/marine-weather.yaml +806 -0
  92. package/dist/specs/weather/time-series-weather.yaml +821 -0
  93. package/dist/specs/weather/weather-forecast.yaml +935 -0
  94. package/dist/specs/whois/asn-lookup.yaml +618 -0
  95. package/dist/specs/whois/bulk-whois-lookup.yaml +827 -0
  96. package/dist/specs/whois/domain-whois-history-lookup.yaml +445 -0
  97. package/dist/specs/whois/reverse-whois.yaml +566 -0
  98. package/dist/specs/whois/whois-domain-lookup.yaml +537 -0
  99. package/dist/specs/whois/whois-ip-lookup.yaml +1123 -0
  100. package/dist/specs/zip-code/bulk-zip-code-lookup.yaml +232 -0
  101. package/dist/specs/zip-code/zip-code-api.yaml +216 -0
  102. package/dist/specs/zip-code/zip-code-distance-match.yaml +239 -0
  103. package/dist/specs/zip-code/zip-code-distance.yaml +233 -0
  104. package/dist/specs/zip-code/zip-codes-by-city.yaml +201 -0
  105. package/dist/specs/zip-code/zip-codes-by-region.yaml +200 -0
  106. package/dist/specs/zip-code/zip-codes-radius-search.yaml +262 -0
  107. package/package.json +6 -2
  108. package/specs/pdf/merge-pdf.json +2 -2
@@ -0,0 +1,479 @@
1
+ openapi: 3.1.1
2
+ info:
3
+ title: Web Scraper API - JavaScript Rendering, Proxy Rotation & CAPTCHA Solving
4
+ version: 1.0.0
5
+ description: 'Executes a sequence of scraping instructions against a target URL and returns the extracted data. Two modes are available via the `jsEnabled` query parameter: `jsEnabled=true` renders the page in a real browser and supports `fill`, `click`, `wait`, iframe switching, image/audio CAPTCHA solving, and other interactive instructions, plus request-level `blockUrl` and `cookies`; `jsEnabled=false` fetches static HTML and supports `postForm`, `getForm`, `getPage`, and `extract`. Every mode''s response is an `extractedData` object keyed by the field names used in your `extract` instructions --- each value is a string when its selector matched exactly one element, or an array of strings when it matched more than one; a selector that matches nothing is omitted from the response entirely. The `text` query parameter strips HTML tags from extracted values; under `jsEnabled=true`, single-element matches are always returned as plain text regardless of `text`, while multi-element matches keep tags unless `text=true` is set.'
6
+ contact:
7
+ name: APIFreaks Support
8
+ url: https://apifreaks.com/contact
9
+ email: support@apifreaks.com
10
+ servers:
11
+ - url: https://api.apifreaks.com/v1.0
12
+ description: Web Scraper API Server
13
+ paths:
14
+ /scraping:
15
+ post:
16
+ tags:
17
+ - Scraping APIs
18
+ summary: Execute a sequence of web scraping instructions against a target URL
19
+ description: Runs form-filling, clicking, data-extraction, and CAPTCHA-solving instructions against a target URL and returns the extracted data. Behavior and available instructions depend on the jsEnabled query parameter.
20
+ operationId: performScraping
21
+ parameters:
22
+ - name: url
23
+ in: query
24
+ required: true
25
+ description: Target URL to scrape.
26
+ schema:
27
+ type: string
28
+ format: uri
29
+ - name: text
30
+ in: query
31
+ required: false
32
+ description: Set to true to strip HTML tags from extracted values (plain text). Set to false to keep HTML tags. Default is false. Under jsEnabled=true, single-element matches are always plain text regardless of this flag.
33
+ schema:
34
+ type: boolean
35
+ default: false
36
+ - name: jsEnabled
37
+ in: query
38
+ required: false
39
+ description: Set to true to render the page in a real browser for dynamic/JavaScript-driven pages (enables fill, click, wait, CAPTCHA-solving, and related instructions). Set to false to fetch static HTML only (enables postForm, getForm, getPage, extract). Default is false.
40
+ schema:
41
+ type: boolean
42
+ default: false
43
+ - name: proxy
44
+ in: query
45
+ required: false
46
+ description: Use a proxy for the request. Pass true/false to toggle the default proxy pool, or a proxy URL string to use a specific proxy.
47
+ schema:
48
+ oneOf:
49
+ - type: boolean
50
+ - type: string
51
+ - name: sslIgnore
52
+ in: query
53
+ required: false
54
+ description: Set to true to ignore SSL certificate errors on the target site. Only works when jsEnabled is true.
55
+ schema:
56
+ type: boolean
57
+ - name: windowSize
58
+ in: query
59
+ required: false
60
+ description: Browser window size in the format 'width,height' (e.g. '1920,1080'). Only works when jsEnabled is true.
61
+ schema:
62
+ type: string
63
+ - name: adBlock
64
+ in: query
65
+ required: false
66
+ description: Set to true to block ads on the target page. Only works when jsEnabled is true.
67
+ schema:
68
+ type: boolean
69
+ - name: captcha
70
+ in: query
71
+ required: false
72
+ description: Set to true to allow CAPTCHA-solving instructions (generalImageCaptcha, fillImageCaptcha, resolveAudioCaptcha) in the request body. Only works when jsEnabled is true.
73
+ schema:
74
+ type: boolean
75
+ requestBody:
76
+ required: false
77
+ description: 'The request body shape depends on the jsEnabled query parameter, not on any field inside the body itself. Pass jsEnabled=true for the interactive/browser instruction set (JsEnabledTrueBody: fill, click, wait, blockUrl, cookies, CAPTCHA solving, and more). Pass jsEnabled=false (or omit it) for the static-HTML instruction set (JsEnabledFalseBody: postForm, getForm, getPage, extract). instructions is an ordered array executed sequentially.'
78
+ content:
79
+ application/json:
80
+ schema:
81
+ anyOf:
82
+ - $ref: '#/components/schemas/JsEnabledTrueBody'
83
+ - $ref: '#/components/schemas/JsEnabledFalseBody'
84
+ examples:
85
+ jsEnabledTrue:
86
+ summary: Example body for jsEnabled=true (fill, click, wait, extract)
87
+ value:
88
+ blockUrl:
89
+ - https://example.com/ads.js
90
+ - https://tracker.example.com/*
91
+ cookies:
92
+ - name: sessionid
93
+ value: abc123
94
+ instructions:
95
+ - fill:
96
+ place: '#username'
97
+ value: myuser
98
+ - fill:
99
+ place: '#password'
100
+ value: mypassword
101
+ - click: input[type=submit]
102
+ - wait: 1000
103
+ - extract:
104
+ pageTitle: title
105
+ welcomeText: h1
106
+ jsEnabledFalse:
107
+ summary: Example body for jsEnabled=false (extract only)
108
+ value:
109
+ instructions:
110
+ - extract:
111
+ pageTitle: title
112
+ paragraphs: p
113
+ responses:
114
+ '200':
115
+ description: Successful scraping operation
116
+ content:
117
+ application/json:
118
+ schema:
119
+ $ref: '#/components/schemas/ScrapingResponse'
120
+ examples:
121
+ jsEnabledFalseResult:
122
+ summary: Static HTML extract (jsEnabled=false)
123
+ value:
124
+ extractedData:
125
+ pageTitle: <title>Example Domain</title>
126
+ paragraphs:
127
+ - <p>This domain is for use in documentation examples without needing permission. Avoid use in operations.</p>
128
+ - <p><a href="https://iana.org/domains/example">Learn more</a></p>
129
+ jsEnabledTrueResult:
130
+ summary: Rendered-page extract with a single-match and a multi-match field (jsEnabled=true)
131
+ value:
132
+ extractedData:
133
+ firstQuote: “The world as we have created it is a process of our thinking. It cannot be changed without changing our thinking.”
134
+ authors:
135
+ - <small class="author" itemprop="author">Albert Einstein</small>
136
+ - <small class="author" itemprop="author">J.K. Rowling</small>
137
+ - <small class="author" itemprop="author">Albert Einstein</small>
138
+ - <small class="author" itemprop="author">Jane Austen</small>
139
+ - <small class="author" itemprop="author">Marilyn Monroe</small>
140
+ - <small class="author" itemprop="author">Albert Einstein</small>
141
+ - <small class="author" itemprop="author">André Gide</small>
142
+ - <small class="author" itemprop="author">Thomas A. Edison</small>
143
+ - <small class="author" itemprop="author">Eleanor Roosevelt</small>
144
+ - <small class="author" itemprop="author">Steve Martin</small>
145
+ '400':
146
+ description: Bad Request — Missing/invalid parameters, malformed request body, unparseable selectors, or the target URL could not be fetched
147
+ content:
148
+ application/json:
149
+ schema:
150
+ $ref: '#/components/schemas/ErrorResponse'
151
+ examples:
152
+ missingOrInvalidParams:
153
+ summary: Missing or invalid url parameter
154
+ value:
155
+ error: Invalid Param Exception
156
+ message: please pass correct parameters
157
+ path: /v1.0/scraping
158
+ status: 400
159
+ timestamp: '2026-07-23T11:50:14.427Z'
160
+ malformedRequestBody:
161
+ summary: Malformed JSON request body
162
+ value:
163
+ timestamp: '2026-07-23T11:47:47.907+00:00'
164
+ status: 400
165
+ error: JSON Parse Error
166
+ message: Invalid or malformed JSON. Please check your request body format and ensure it's valid JSON.
167
+ path: /v1/scraping/params
168
+ missingInstructions:
169
+ summary: Empty or missing instructions body
170
+ value:
171
+ timestamp: '2026-07-23T11:47:54.568+00:00'
172
+ status: 400
173
+ error: Bad Request
174
+ message: Arguments are missing or wrong
175
+ path: /v1/scraping/params
176
+ invalidSelector:
177
+ summary: Unparseable CSS or XPath selector
178
+ value:
179
+ timestamp: '2026-07-23T11:50:15.539+00:00'
180
+ status: 400
181
+ error: Bad Request
182
+ message: Check the Css Selectors or Xpath, Some of them are wrong
183
+ path: /v1/scraping/params
184
+ targetUnreachable:
185
+ summary: Target URL could not be reached (DNS/connection failure)
186
+ value:
187
+ timestamp: '2026-07-23T11:50:16.120+00:00'
188
+ status: 400
189
+ error: IO Exception
190
+ message: Error while reading the datathisdomaindoesnotexist12345xyz.com
191
+ path: /v1/scraping/params
192
+ targetNonOkStatus:
193
+ summary: Target URL returned a non-200 HTTP response
194
+ value:
195
+ timestamp: '2026-07-23T11:50:26.224+00:00'
196
+ status: 400
197
+ error: Bad Request
198
+ message: Check the url or links
199
+ path: /v1/scraping/params
200
+ '404':
201
+ description: Not Found — Wrong HTTP method or path used against this endpoint
202
+ content:
203
+ application/json:
204
+ schema:
205
+ $ref: '#/components/schemas/ErrorResponse'
206
+ examples:
207
+ wrongMethodOrPath:
208
+ summary: Endpoint called with a non-POST method
209
+ value:
210
+ error: Resource Not Found
211
+ message: The requested resource could not be found. Please verify the URL and try again.
212
+ path: /v1.0/scraping
213
+ status: 404
214
+ timestamp: '2026-07-23T11:51:33.926Z'
215
+ components:
216
+ securitySchemes:
217
+ ApiKeyAuthHeader:
218
+ type: apiKey
219
+ in: header
220
+ name: X-apiKey
221
+ description: Pass your API key via the X-apiKey request header.
222
+ ApiKeyAuthQuery:
223
+ type: apiKey
224
+ in: query
225
+ name: apiKey
226
+ description: Pass your API key via the apiKey query parameter.
227
+ schemas:
228
+ JsEnabledTrueBody:
229
+ type: object
230
+ description: 'Request body for jsEnabled=true: renders the page in a real browser and supports interactive instructions.'
231
+ properties:
232
+ blockUrl:
233
+ type: array
234
+ items:
235
+ type: string
236
+ description: List of script or URL patterns to block during network requests.
237
+ cookies:
238
+ type: array
239
+ items:
240
+ $ref: '#/components/schemas/Cookie'
241
+ description: List of cookies to be set in the browser session.
242
+ instructions:
243
+ type: array
244
+ description: An ordered list of step-by-step scraping instructions to be executed in the browser. Each item is one Instruction object, with exactly one action field set.
245
+ items:
246
+ $ref: '#/components/schemas/Instruction'
247
+ Instruction:
248
+ type: object
249
+ description: A single browser scraping step. Exactly one of these action fields is set per instruction; every other field is absent.
250
+ properties:
251
+ fill:
252
+ $ref: '#/components/schemas/PlaceValue'
253
+ description: 'Fill action: fills an input field with a value using a CSS or XPath selector.'
254
+ click:
255
+ type: string
256
+ description: 'Click action: CSS selector or XPath identifying the element to click.'
257
+ clickIfExist:
258
+ type: string
259
+ description: 'Click if exists action: CSS selector or XPath identifying the element to click, only if it appears on the page within a short timeout.'
260
+ enter:
261
+ type: string
262
+ description: 'Enter key action: CSS selector or XPath identifying the element to send an Enter keystroke to.'
263
+ newTab:
264
+ type: boolean
265
+ description: 'New tab action: set to true to switch focus to a newly opened browser tab.'
266
+ moveToRelativeTab:
267
+ type: integer
268
+ description: 'Move to relative tab action: relative tab index to move to (e.g. 1 for the next tab, -1 for the previous tab).'
269
+ wait:
270
+ type: integer
271
+ description: 'Wait action: pauses execution for this many milliseconds.'
272
+ waitFor:
273
+ type: string
274
+ description: 'Wait for element action: CSS selector or XPath identifying the element to wait for before continuing.'
275
+ select:
276
+ $ref: '#/components/schemas/PlaceValue'
277
+ description: 'Select dropdown action: selects an option from a dropdown element by selector and matching value.'
278
+ jsExe:
279
+ type: string
280
+ description: 'Execute JavaScript action: JavaScript code to execute inside the page context.'
281
+ conditionalCheck:
282
+ type: array
283
+ description: 'Conditional check action: list of conditional steps, each supporting if-<method> and else-<method> keys with conditions, executed based on element state.'
284
+ items:
285
+ type: object
286
+ description: A single conditional step, supporting if-<method> and else-<method> keys with conditions.
287
+ clickButtonByValue:
288
+ $ref: '#/components/schemas/PlaceValue'
289
+ description: 'Click button by value action: clicks a button that matches a specific text or value attribute.'
290
+ generalImageCaptcha:
291
+ type: array
292
+ description: 'Image captcha solver action: instructions for solving image-based captchas using a selected model.'
293
+ items:
294
+ $ref: '#/components/schemas/ImageCaptchaInstruction'
295
+ blockElement:
296
+ type: array
297
+ description: 'Block element action: list of CSS selectors or XPaths for elements to block or hide on the page.'
298
+ items:
299
+ type: string
300
+ extract:
301
+ $ref: '#/components/schemas/ExtractInstruction'
302
+ description: 'Extract data action: defines what data to extract and how, keyed by whatever field names you choose.'
303
+ fillImageCaptcha:
304
+ type: array
305
+ description: 'Fill image captcha action: captures and fills image-based captcha values automatically.'
306
+ items:
307
+ $ref: '#/components/schemas/ImageCaptchaInstruction'
308
+ switchToIframe:
309
+ type: string
310
+ description: 'Switch to iframe action: switches the browser context into an iframe identified by name or ID.'
311
+ switchToParentFrame:
312
+ type: boolean
313
+ description: 'Switch to parent frame action: returns the browser context from an iframe back to its parent frame.'
314
+ resolveAudioCaptcha:
315
+ $ref: '#/components/schemas/AudioCaptchaInstruction'
316
+ description: 'Resolve audio captcha action: solves audio-based captcha challenges and fills the resolved text into the target field.'
317
+ screenshot:
318
+ type: string
319
+ description: 'Screenshot action: captures a screenshot of the current page state. Can be a boolean-like value or a selector.'
320
+ saveimage:
321
+ type: string
322
+ description: 'Save image action: saves an image from the page by CSS selector or element ID.'
323
+ Cookie:
324
+ type: object
325
+ description: A single cookie to set in the browser session before running instructions.
326
+ required:
327
+ - name
328
+ - value
329
+ properties:
330
+ name:
331
+ type: string
332
+ description: Cookie name.
333
+ value:
334
+ type: string
335
+ description: Cookie value.
336
+ PlaceValue:
337
+ type: object
338
+ description: A selector/value pair used by fill, select, and clickButtonByValue instructions.
339
+ required:
340
+ - place
341
+ - value
342
+ properties:
343
+ place:
344
+ type: string
345
+ description: CSS or XPath selector identifying the target element.
346
+ value:
347
+ type: string
348
+ description: Value to fill, select, or match against.
349
+ ImageCaptchaInstruction:
350
+ type: object
351
+ description: Instructions for locating and solving a single image CAPTCHA challenge.
352
+ properties:
353
+ imagePath:
354
+ type: string
355
+ description: Selector for the CAPTCHA image element.
356
+ textField:
357
+ type: string
358
+ description: Selector for the field where the CAPTCHA text is entered.
359
+ imageUpdatePath:
360
+ type: string
361
+ description: Selector to refresh or update the CAPTCHA image.
362
+ captchaFailedPath:
363
+ type: string
364
+ description: Selector indicating a CAPTCHA failure so the solver can retry.
365
+ model:
366
+ type: string
367
+ description: Model used for CAPTCHA solving.
368
+ enum:
369
+ - Model_1
370
+ - Model_2
371
+ - Model_3
372
+ - Model_4
373
+ - Model_5
374
+ - Model_6
375
+ - basicTnImageProcessing
376
+ - basicPhImageProcessing
377
+ AudioCaptchaInstruction:
378
+ type: object
379
+ description: Selectors for locating and solving a single audio CAPTCHA challenge.
380
+ properties:
381
+ audioPath:
382
+ type: string
383
+ description: Selector for the audio CAPTCHA element.
384
+ textField:
385
+ type: string
386
+ description: Selector for the field where the resolved audio CAPTCHA text is entered.
387
+ ExtractInstruction:
388
+ type: object
389
+ description: Maps arbitrary output field names to CSS or XPath selectors. Each key becomes a field in the response's extractedData object.
390
+ additionalProperties:
391
+ title: SelectorForField
392
+ type: string
393
+ description: 'CSS selector or XPath identifying the element(s) to extract for this output field. Example: ''h1'' or ''/html/body/div/div[2]''.'
394
+ JsEnabledFalseBody:
395
+ type: object
396
+ description: 'Request body for jsEnabled=false (or omitted): fetches static HTML only, no browser rendering.'
397
+ properties:
398
+ instructions:
399
+ type: array
400
+ description: A list of sequential instructions to execute against the static HTML response. Each item is one StaticInstruction object, with exactly one action field set.
401
+ items:
402
+ $ref: '#/components/schemas/StaticInstruction'
403
+ StaticInstruction:
404
+ type: object
405
+ description: A single static-HTML scraping step. Exactly one of these action fields is set per instruction; every other field is absent.
406
+ properties:
407
+ postForm:
408
+ $ref: '#/components/schemas/FormSubmission'
409
+ description: 'POST form action: submits a form using the POST method. Provide the form''s XPath/CSS selector and input values.'
410
+ getForm:
411
+ $ref: '#/components/schemas/FormSubmission'
412
+ description: 'GET form action: submits a form using the GET method. Provide the form''s XPath/CSS selector and input values.'
413
+ extract:
414
+ $ref: '#/components/schemas/ExtractInstruction'
415
+ description: 'Extract data action: defines what data to extract and how, keyed by whatever field names you choose.'
416
+ getPage:
417
+ type: string
418
+ description: 'Get page action: retrieves the full page content. Optionally provide a URL or selector to target a specific page.'
419
+ FormSubmission:
420
+ type: object
421
+ description: Form selector and field values to submit via postForm or getForm.
422
+ properties:
423
+ selector:
424
+ type: string
425
+ description: CSS or XPath selector identifying the form element.
426
+ data:
427
+ type: object
428
+ description: Form field name/value pairs to submit.
429
+ additionalProperties:
430
+ title: FormFieldValue
431
+ type: string
432
+ description: Value to submit for this form field.
433
+ ScrapingResponse:
434
+ type: object
435
+ description: Result of running the scraping instructions against the target URL.
436
+ required:
437
+ - extractedData
438
+ properties:
439
+ extractedData:
440
+ type: object
441
+ description: Container keyed by the field names used in your extract instructions. A field is present only if its selector matched at least one element on the page.
442
+ $ref: '#/components/schemas/ExtractedField'
443
+ ExtractedField:
444
+ type:
445
+ - string
446
+ - array
447
+ title: ExtractedField
448
+ description: The value scraped for one field of an extract instruction. A string when the selector matched exactly one element (content depends on the text query parameter and, under jsEnabled=true, is always plain text). An array of strings, in document order, when the selector matched more than one element (each entry keeps HTML tags unless text=true is set). A field whose selector matched nothing is omitted from extractedData entirely rather than appearing as an empty value.
449
+ items:
450
+ type: string
451
+ ErrorResponse:
452
+ type: object
453
+ description: Standard error response returned when a request fails.
454
+ required:
455
+ - error
456
+ - message
457
+ - path
458
+ - status
459
+ - timestamp
460
+ properties:
461
+ error:
462
+ type: string
463
+ description: Short error category or exception type.
464
+ message:
465
+ type: string
466
+ description: Human-readable error message describing the failure.
467
+ path:
468
+ type: string
469
+ description: API endpoint path that produced the error.
470
+ status:
471
+ type: integer
472
+ description: HTTP status code returned with the error.
473
+ timestamp:
474
+ type: string
475
+ format: date-time
476
+ description: Timestamp when the error occurred (ISO 8601).
477
+ security:
478
+ - ApiKeyAuthHeader: []
479
+ - ApiKeyAuthQuery: []