Puppeteer Improved Inputs Scraper
This Actor is unavailable because the developer has decided to deprecate it. Would you like to try a similar Actor instead?
See alternative ActorsPuppeteer Improved Inputs Scraper
Add the following options to inputs: Use Live View, Inject Query, and Inject Underscore
You can access the Puppeteer Improved Inputs Scraper programmatically from your own applications by using the Apify API. You can choose the language preference from below. To use the Apify API, you’ll need an Apify account and your API token, found in Integrations settings in Apify Console.
1{
2 "openapi": "3.0.1",
3 "info": {
4 "version": "0.0",
5 "x-build-id": "y7Fyw38cdBbwSB4aR"
6 },
7 "servers": [
8 {
9 "url": "https://api.apify.com/v2"
10 }
11 ],
12 "paths": {
13 "/acts/barry8schneider~puppeteer20191228/run-sync-get-dataset-items": {
14 "post": {
15 "operationId": "run-sync-get-dataset-items-barry8schneider-puppeteer20191228",
16 "x-openai-isConsequential": false,
17 "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
18 "tags": [
19 "Run Actor"
20 ],
21 "requestBody": {
22 "required": true,
23 "content": {
24 "application/json": {
25 "schema": {
26 "$ref": "#/components/schemas/inputSchema"
27 }
28 }
29 }
30 },
31 "parameters": [
32 {
33 "name": "token",
34 "in": "query",
35 "required": true,
36 "schema": {
37 "type": "string"
38 },
39 "description": "Enter your Apify token here"
40 }
41 ],
42 "responses": {
43 "200": {
44 "description": "OK"
45 }
46 }
47 }
48 },
49 "/acts/barry8schneider~puppeteer20191228/runs": {
50 "post": {
51 "operationId": "runs-sync-barry8schneider-puppeteer20191228",
52 "x-openai-isConsequential": false,
53 "summary": "Executes an Actor and returns information about the initiated run in response.",
54 "tags": [
55 "Run Actor"
56 ],
57 "requestBody": {
58 "required": true,
59 "content": {
60 "application/json": {
61 "schema": {
62 "$ref": "#/components/schemas/inputSchema"
63 }
64 }
65 }
66 },
67 "parameters": [
68 {
69 "name": "token",
70 "in": "query",
71 "required": true,
72 "schema": {
73 "type": "string"
74 },
75 "description": "Enter your Apify token here"
76 }
77 ],
78 "responses": {
79 "200": {
80 "description": "OK",
81 "content": {
82 "application/json": {
83 "schema": {
84 "$ref": "#/components/schemas/runsResponseSchema"
85 }
86 }
87 }
88 }
89 }
90 }
91 },
92 "/acts/barry8schneider~puppeteer20191228/run-sync": {
93 "post": {
94 "operationId": "run-sync-barry8schneider-puppeteer20191228",
95 "x-openai-isConsequential": false,
96 "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
97 "tags": [
98 "Run Actor"
99 ],
100 "requestBody": {
101 "required": true,
102 "content": {
103 "application/json": {
104 "schema": {
105 "$ref": "#/components/schemas/inputSchema"
106 }
107 }
108 }
109 },
110 "parameters": [
111 {
112 "name": "token",
113 "in": "query",
114 "required": true,
115 "schema": {
116 "type": "string"
117 },
118 "description": "Enter your Apify token here"
119 }
120 ],
121 "responses": {
122 "200": {
123 "description": "OK"
124 }
125 }
126 }
127 }
128 },
129 "components": {
130 "schemas": {
131 "inputSchema": {
132 "type": "object",
133 "required": [
134 "startUrls",
135 "pageFunction"
136 ],
137 "properties": {
138 "startUrls": {
139 "title": "Start URLs",
140 "type": "array",
141 "description": "URLs to start with",
142 "items": {
143 "type": "object",
144 "required": [
145 "url"
146 ],
147 "properties": {
148 "url": {
149 "type": "string",
150 "title": "URL of a web page",
151 "format": "uri"
152 }
153 }
154 }
155 },
156 "pseudoUrls": {
157 "title": "Pseudo-URLs",
158 "type": "array",
159 "description": "Pseudo-URLs to match links in the page that you want to enqueue. Combine with Link selector to tell the scraper where to find links. Omitting the Pseudo-URLs will cause the scraper to enqueue all links matched by the Link selector.",
160 "default": [],
161 "items": {
162 "type": "object",
163 "required": [
164 "purl"
165 ],
166 "properties": {
167 "purl": {
168 "type": "string",
169 "title": "Pseudo-URL of a web page"
170 }
171 }
172 }
173 },
174 "linkSelector": {
175 "title": "Link selector",
176 "type": "string",
177 "description": "CSS selector matching elements with 'href' attributes that should be enqueued. To enqueue urls from <code><div class=\"my-class\" href=...></code> tags, you would enter <strong>div.my-class</strong>. Leave empty to ignore all links."
178 },
179 "clickableElementsSelector": {
180 "title": "Clickable elements selector",
181 "type": "string",
182 "description": "For pages where simple 'href' links are not available, this attribute allows you to specify a CSS selector matching elements that the scraper will mouse click after the page function finishes. Any triggered requests, navigations or open tabs will be intercepted and the target URLs will be filtered using Pseudo URLs and subsequently added to the request queue. Leave empty to prevent the scraper from clicking in the page. Using this setting will have a performance impact."
183 },
184 "keepUrlFragments": {
185 "title": "Keep URL fragments",
186 "type": "boolean",
187 "description": "URL fragments (the parts of URL after a <code>#</code>) are not considered when the scraper determines whether a URL has already been visited. This means that when adding URLs such as <code>https://example.com/#foo</code> and <code>https://example.com/#bar</code>, only the first will be visited. Turn this option on to tell the scraper to visit both.",
188 "default": false
189 },
190 "injectJQuery": {
191 "title": "Inject jQuery to work in Page.Evaluate()",
192 "type": "boolean",
193 "description": "Indicates that the <a href='http://jquery.com' target='_blank' rel='noopener'>jQuery</a> library should be injected into each page before <b>Page function</b> is invoked so jQuery can be used within the Page.Evaluate() function. Note that the jQuery object will not be registered into global namespace in order to avoid conflicts with libraries used by the web page. It can only be accessed through <code>context.jQuery</code>. For more <a href='https://docs.apify.com/scraping/puppeteer-scraper#injecting-jquery' target='_blank' rel='noopener'>information</a> ",
194 "default": true
195 },
196 "injectUnderscoreJs": {
197 "title": "Inject Underscore.js to work in Page.Evaluate()",
198 "type": "boolean",
199 "description": "Indicates that the <a href='http://underscorejs.org' target='_blank' rel='noopener'>Underscore.js</a> library should be injected into each page before <b>Page function</b> is invoked so Underscore.js can be used within the Page.Evaluate() function. Note that the Underscore object will not be registered into global namespace in order to avoid conflicts with libraries used by the web page. It can only be accessed through <code>context.underscoreJs</code>.",
200 "default": false
201 },
202 "proxyConfiguration": {
203 "title": "Proxy configuration",
204 "type": "object",
205 "description": "Choose to use no proxy, Apify Proxy, or provide custom proxy URLs.",
206 "default": {}
207 },
208 "ignoreSslErrors": {
209 "title": "Ignore SSL errors",
210 "type": "boolean",
211 "description": "Scraper will ignore SSL certificate errors.",
212 "default": true
213 },
214 "debugLog": {
215 "title": "Debug log",
216 "type": "boolean",
217 "description": "Debug messages will be included in the log. Use <code>context.log.debug('message')</code> to log your own debug messages.",
218 "default": false
219 },
220 "customData": {
221 "title": "Custom data",
222 "type": "object",
223 "description": "This object will be available on pageFunction's context as customData.",
224 "default": {}
225 },
226 "pageFunction": {
227 "title": "Page function",
228 "type": "string",
229 "description": "Function executed for each request"
230 },
231 "preGotoFunction": {
232 "title": "Pre goto function",
233 "type": "string",
234 "description": "This function is executed before navigation to a given URL. It can be useful to do pre-processing, changes to the page that allow bypassing anti-scraping protections or just setting cookies."
235 },
236 "initialCookies": {
237 "title": "Initial cookies",
238 "type": "array",
239 "description": "The provided cookies will be pre-set to all pages the scraper opens.",
240 "default": []
241 },
242 "useChrome": {
243 "title": "Use Chrome",
244 "type": "boolean",
245 "description": "The scraper will use a real Chrome browser instead of a Chromium masking as Chrome. Using this option may help with bypassing certain anti-scraping protections, but risks that the scraper will be unstable or not work at all.",
246 "default": false
247 },
248 "useStealth": {
249 "title": "Use Stealth",
250 "type": "boolean",
251 "description": "The scraper will apply various browser emulation techniques to match a real user as closely as possible. This feature works best in conjunction with the Use Chrome option and also carries the risk of making the scraper unstable.",
252 "default": false
253 },
254 "ignoreCorsAndCsp": {
255 "title": "Ignore CORS and CSP",
256 "type": "boolean",
257 "description": "Scraper will ignore CSP (content security policy) and CORS (cross origin resource sharing) settings of visited pages and requested domains. This enables you to freely use XHR/Fetch to make HTTP requests from the scraper.",
258 "default": false
259 },
260 "downloadMedia": {
261 "title": "Download media",
262 "type": "boolean",
263 "description": "Scraper will download media such as images, fonts, videos and sounds. Disabling this may speed up the scrape, but certain websites could stop working correctly.",
264 "default": false
265 },
266 "downloadCss": {
267 "title": "Download CSS",
268 "type": "boolean",
269 "description": "Scraper will download CSS stylesheets. Disabling this may speed up the scrape, but certain websites could stop working correctly.",
270 "default": false
271 },
272 "useLiveView": {
273 "title": "Use LiveView",
274 "type": "boolean",
275 "description": "Displays the first page of the browser. Disabling this may speed up the scrape.",
276 "default": false
277 },
278 "maxRequestRetries": {
279 "title": "Max request retries",
280 "minimum": 0,
281 "type": "integer",
282 "description": "Maximum number of times the request for the page will be retried in case of an error. Setting it to 0 means that the request will be attempted once and will not be retried if it fails.",
283 "default": 3
284 },
285 "maxPagesPerCrawl": {
286 "title": "Max pages per run",
287 "minimum": 0,
288 "type": "integer",
289 "description": "Maximum number of pages that the scraper will open. 0 means unlimited.",
290 "default": 0
291 },
292 "maxResultsPerCrawl": {
293 "title": "Max result records",
294 "minimum": 0,
295 "type": "integer",
296 "description": "Maximum number of results that will be saved to dataset. The scraper will terminate afterwards. 0 means unlimited.",
297 "default": 0
298 },
299 "maxCrawlingDepth": {
300 "title": "Max crawling depth",
301 "minimum": 0,
302 "type": "integer",
303 "description": "Defines how many links away from the StartURLs will the scraper descend. 0 means unlimited.",
304 "default": 0
305 },
306 "maxConcurrency": {
307 "title": "Max concurrency",
308 "minimum": 1,
309 "type": "integer",
310 "description": "Defines how many pages can be processed by the scraper in parallel. The scraper automatically increases and decreases concurrency based on available system resources. Use this option to set a hard limit.",
311 "default": 50
312 },
313 "pageLoadTimeoutSecs": {
314 "title": "Page load timeout",
315 "minimum": 1,
316 "type": "integer",
317 "description": "Maximum time the scraper will allow a web page to load in seconds.",
318 "default": 60
319 },
320 "pageFunctionTimeoutSecs": {
321 "title": "Page function timeout",
322 "minimum": 1,
323 "type": "integer",
324 "description": "Maximum time the scraper will wait for the page function to execute in seconds.",
325 "default": 60
326 },
327 "waitUntil": {
328 "title": "Navigation wait until",
329 "type": "array",
330 "description": "The scraper will wait until the selected events are triggered in the page before executing the page function. Available events are <code>domcontentloaded</code>, <code>load</code>, <code>networkidle2</code> and <code>networkidle0</code>. <a href=\"https://pptr.dev/#?product=Puppeteer&show=api-pagegotourl-options\" target=\"_blank\">See Puppeteer docs</a>.",
331 "default": [
332 "networkidle2"
333 ]
334 },
335 "browserLog": {
336 "title": "Browser log",
337 "type": "boolean",
338 "description": "Console messages from the Browser will be included in the log. This may result in the log being flooded by error messages, warnings and other messages of little value, especially with high concurrency.",
339 "default": false
340 }
341 }
342 },
343 "runsResponseSchema": {
344 "type": "object",
345 "properties": {
346 "data": {
347 "type": "object",
348 "properties": {
349 "id": {
350 "type": "string"
351 },
352 "actId": {
353 "type": "string"
354 },
355 "userId": {
356 "type": "string"
357 },
358 "startedAt": {
359 "type": "string",
360 "format": "date-time",
361 "example": "2025-01-08T00:00:00.000Z"
362 },
363 "finishedAt": {
364 "type": "string",
365 "format": "date-time",
366 "example": "2025-01-08T00:00:00.000Z"
367 },
368 "status": {
369 "type": "string",
370 "example": "READY"
371 },
372 "meta": {
373 "type": "object",
374 "properties": {
375 "origin": {
376 "type": "string",
377 "example": "API"
378 },
379 "userAgent": {
380 "type": "string"
381 }
382 }
383 },
384 "stats": {
385 "type": "object",
386 "properties": {
387 "inputBodyLen": {
388 "type": "integer",
389 "example": 2000
390 },
391 "rebootCount": {
392 "type": "integer",
393 "example": 0
394 },
395 "restartCount": {
396 "type": "integer",
397 "example": 0
398 },
399 "resurrectCount": {
400 "type": "integer",
401 "example": 0
402 },
403 "computeUnits": {
404 "type": "integer",
405 "example": 0
406 }
407 }
408 },
409 "options": {
410 "type": "object",
411 "properties": {
412 "build": {
413 "type": "string",
414 "example": "latest"
415 },
416 "timeoutSecs": {
417 "type": "integer",
418 "example": 300
419 },
420 "memoryMbytes": {
421 "type": "integer",
422 "example": 1024
423 },
424 "diskMbytes": {
425 "type": "integer",
426 "example": 2048
427 }
428 }
429 },
430 "buildId": {
431 "type": "string"
432 },
433 "defaultKeyValueStoreId": {
434 "type": "string"
435 },
436 "defaultDatasetId": {
437 "type": "string"
438 },
439 "defaultRequestQueueId": {
440 "type": "string"
441 },
442 "buildNumber": {
443 "type": "string",
444 "example": "1.0.0"
445 },
446 "containerUrl": {
447 "type": "string"
448 },
449 "usage": {
450 "type": "object",
451 "properties": {
452 "ACTOR_COMPUTE_UNITS": {
453 "type": "integer",
454 "example": 0
455 },
456 "DATASET_READS": {
457 "type": "integer",
458 "example": 0
459 },
460 "DATASET_WRITES": {
461 "type": "integer",
462 "example": 0
463 },
464 "KEY_VALUE_STORE_READS": {
465 "type": "integer",
466 "example": 0
467 },
468 "KEY_VALUE_STORE_WRITES": {
469 "type": "integer",
470 "example": 1
471 },
472 "KEY_VALUE_STORE_LISTS": {
473 "type": "integer",
474 "example": 0
475 },
476 "REQUEST_QUEUE_READS": {
477 "type": "integer",
478 "example": 0
479 },
480 "REQUEST_QUEUE_WRITES": {
481 "type": "integer",
482 "example": 0
483 },
484 "DATA_TRANSFER_INTERNAL_GBYTES": {
485 "type": "integer",
486 "example": 0
487 },
488 "DATA_TRANSFER_EXTERNAL_GBYTES": {
489 "type": "integer",
490 "example": 0
491 },
492 "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
493 "type": "integer",
494 "example": 0
495 },
496 "PROXY_SERPS": {
497 "type": "integer",
498 "example": 0
499 }
500 }
501 },
502 "usageTotalUsd": {
503 "type": "number",
504 "example": 0.00005
505 },
506 "usageUsd": {
507 "type": "object",
508 "properties": {
509 "ACTOR_COMPUTE_UNITS": {
510 "type": "integer",
511 "example": 0
512 },
513 "DATASET_READS": {
514 "type": "integer",
515 "example": 0
516 },
517 "DATASET_WRITES": {
518 "type": "integer",
519 "example": 0
520 },
521 "KEY_VALUE_STORE_READS": {
522 "type": "integer",
523 "example": 0
524 },
525 "KEY_VALUE_STORE_WRITES": {
526 "type": "number",
527 "example": 0.00005
528 },
529 "KEY_VALUE_STORE_LISTS": {
530 "type": "integer",
531 "example": 0
532 },
533 "REQUEST_QUEUE_READS": {
534 "type": "integer",
535 "example": 0
536 },
537 "REQUEST_QUEUE_WRITES": {
538 "type": "integer",
539 "example": 0
540 },
541 "DATA_TRANSFER_INTERNAL_GBYTES": {
542 "type": "integer",
543 "example": 0
544 },
545 "DATA_TRANSFER_EXTERNAL_GBYTES": {
546 "type": "integer",
547 "example": 0
548 },
549 "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
550 "type": "integer",
551 "example": 0
552 },
553 "PROXY_SERPS": {
554 "type": "integer",
555 "example": 0
556 }
557 }
558 }
559 }
560 }
561 }
562 }
563 }
564 }
565}
Puppeteer Improved Inputs Scraper OpenAPI definition
OpenAPI is a standard for designing and describing RESTful APIs, allowing developers to define API structure, endpoints, and data formats in a machine-readable way. It simplifies API development, integration, and documentation.
OpenAPI is effective when used with AI agents and GPTs by standardizing how these systems interact with various APIs, for reliable integrations and efficient communication.
By defining machine-readable API specifications, OpenAPI allows AI models like GPTs to understand and use varied data sources, improving accuracy. This accelerates development, reduces errors, and provides context-aware responses, making OpenAPI a core component for AI applications.
You can download the OpenAPI definitions for Puppeteer Improved Inputs Scraper from the options below:
If you’d like to learn more about how OpenAPI powers GPTs, read our blog post.
You can also check out our other API clients: