AgentQL Demo avatar
AgentQL Demo

Pricing

Pay per usage

Go to Store
AgentQL Demo

AgentQL Demo

Developed by

Ondra Urban

Ondra Urban

Maintained by Community

This Actor wraps the AgentQL API to showcase its monetization on Apify.

0.0 (0)

Pricing

Pay per usage

0

Total users

1

Monthly users

1

Runs succeeded

>99%

Last modified

3 months ago

.actor/Dockerfile

# Specify the base Docker image. You can read more about
# the available images at https://docs.apify.com/sdk/js/docs/guides/docker-images
# You can also use any other image from Docker Hub.
FROM apify/actor-node:20
# Check preinstalled packages
RUN npm ls crawlee apify puppeteer playwright
# Copy just package.json and package-lock.json
# to speed up the build using Docker layer cache.
COPY package*.json ./
# Install NPM packages, skip optional and development dependencies to
# keep the image small. Avoid logging too much and print the dependency
# tree for debugging
RUN npm --quiet set progress=false \
&& npm install --omit=dev --omit=optional \
&& echo "Installed NPM packages:" \
&& (npm list --omit=dev --all || true) \
&& echo "Node.js version:" \
&& node --version \
&& echo "NPM version:" \
&& npm --version \
&& rm -r ~/.npm
# Next, copy the remaining files and directories with the source code.
# Since we do this after NPM install, quick build will be really fast
# for most source file changes.
COPY . ./
# Create and run as a non-root user.
RUN adduser -h /home/apify -D apify && \
chown -R apify:apify ./
USER apify
# Run the image.
CMD npm start --silent

.actor/actor.json

{
"actorSpecification": 1,
"name": "my-actor-6",
"title": "Scrape single page in JavaScript",
"description": "Scrape data from single page with provided URL.",
"version": "0.0",
"meta": {
"templateId": "js-start"
},
"input": "./input_schema.json",
"dockerfile": "./Dockerfile"
}

.actor/input_schema.json

{
"title": "Scrape data from a web page using AgentQL",
"type": "object",
"schemaVersion": 1,
"properties": {
"url": {
"title": "URL of the page",
"type": "string",
"description": "The URL of website you want to get the data from.",
"editor": "textfield",
"prefill": "https://news.ycombinator.com/"
}
},
"required": ["url"]
}

src/main.js

1import { Actor } from 'apify';
2// this is ESM project, and as such, it requires you to specify extensions in your relative imports
3// read more about this here: https://nodejs.org/docs/latest-v18.x/api/esm.html#mandatory-file-extensions
4// import { router } from './routes.js';
5
6// The init() call configures the Actor for its environment. It's recommended to start every Actor with an init().
7await Actor.init();
8
9// Structure of input is defined in input_schema.json
10const input = await Actor.getInput();
11const { url } = input;
12
13// Fetch the HTML content of the page.
14const response = await fetch('https://api.agentql.com/v1/query-data', {
15 method: 'POST',
16 headers: {
17 'X-API-Key': process.env.AGENTQL_API_KEY,
18 'Content-Type': 'application/json'
19 },
20 body: JSON.stringify({
21 query: "{ articles[] { title upvotes } }",
22 url,
23 params: {
24 wait_for: 0,
25 is_scroll_to_bottom_enabled: false,
26 mode: "fast",
27 is_screenshot_enabled: false
28 }
29 })
30});
31const data = await response.json();
32
33// Save headings to Dataset - a table-like storage.
34await Actor.pushData(data);
35
36// Gracefully exit the Actor process. It's recommended to quit all Actors with an exit().
37await Actor.exit();

.dockerignore

# configurations
.idea
# crawlee and apify storage folders
apify_storage
crawlee_storage
storage
# installed files
node_modules
# git folder
.git

.gitignore

# This file tells Git which files shouldn't be added to source control
.DS_Store
.idea
dist
node_modules
apify_storage
storage/*
!storage/key_value_stores
storage/key_value_stores/*
!storage/key_value_stores/default
storage/key_value_stores/default/*
!storage/key_value_stores/default/INPUT.json

package.json

{
"name": "js-scrape-single-page",
"version": "0.0.1",
"type": "module",
"description": "This is an example of an Apify actor.",
"engines": {
"node": ">=18.0.0"
},
"dependencies": {
"apify": "^3.2.6",
"axios": "^1.5.0",
"cheerio": "^1.0.0-rc.12"
},
"scripts": {
"start": "node ./src/main.js",
"test": "echo \"Error: oops, the actor has no tests yet, sad!\" && exit 1"
},
"author": "It's not you it's me",
"license": "ISC"
}