Scrawl / Guide

Operate Scrawl from Telegram.

Scrawl's Telegram bot runs scrapes and crawls as owned jobs behind one egress and policy gate, and returns the results as files. This guide walks through the jobs people run every day and the setup their admins do, and lists every command.

At a glance

Where you use it
In Scrawl's Telegram bot, on a dedicated deployment or the shared hosted service, both operated by ApexAi. Software uses ApexAPI and agents use ApexMCP instead.
Customer path
Fetch and parse pages, run crawls, download results, extract assets, and use AI.
Admin path
Decide who may use the bot, and set up projects and spiders.
Scrawl today
In developmentNot publicly hosted

Tutorial

Operate it step by step.

Follow every step, or only the customer or admin path. Your progress stays in this browser.

Step 1 of 11 · Customer and Admin

Start the bot

Open Scrawl and check that it is ready.

Do this

/start
Greets you and shows the main menu.
/status
Shows whether Scrawl and the services it depends on are healthy.
/help
Lists the commands available to you on this deployment.
Illustrative example
  1. You: /status
  2. Bot: Scrawl: ready Queue: ok · Storage: ok

You should see. Scrawl answers, and /help shows the commands you are allowed to use.

Tip. The inline menu works on a dedicated deployment. On the hosted service, type the commands instead.

Step 2 of 11 · Customer

Fetch and inspect a page

Get one page through Scrawl's checks and look at what came back.

Do this

/scrapy_fetch <url>
Fetches the URL once it passes the checks.
/scrapy_view <url>
Shows the page's text response.
/scrapy_parse <url>
Parses it with your spider; the buttons set depth, callback, metadata, and output.
/scrape <url>
On a dedicated deployment: the page as Markdown in one step; add links for its links instead.
Illustrative example
  1. You: /scrapy_view https://example.com/catalog
  2. Bot: 200 OK · text/html Example Catalog — Widgets, Gadgets, …

You should see. The response, or a clear refusal when the URL is not allowed.

Tip. Private and internal addresses are always refused, whatever the deployment.

Step 3 of 11 · Customer

Run a crawl

Run a spider from the catalog as a job.

Do this

/scrapy_list
Lists the spiders you may run.
/scrapy_crawl <spider>
Starts the spider as a job and gives you its id.
/scrapy_check
Runs the project's checks first, if you want to.
Illustrative example
  1. You: /scrapy_crawl example_products
  2. Bot: Job job_7f3a queued. /jobs shows its progress.

You should see. A job id; the bot tells you when the job finishes.

Step 4 of 11 · Customer

Follow jobs and download results

See what is running and get the results in the format you want.

Do this

/jobs
Your active jobs.
/artifacts <job_id>
The job's results; pick one, then a format.
/export
Sets the format you get by default.
/cancel <job_id>
Stops a job of yours.

You should see. Result files in Markdown, text, JSON, raw, or parse output.

Tip. /history lists your finished jobs, so you can fetch their results later.

Step 5 of 11 · Customer

Extract files from a page

Collect images, documents, data files, or media that a page links to.

Do this

/scrapy_extract <url>
Choose what to collect; /scrapy_images and the others collect one kind.
/scrapy_asset_confirm <job_id>
Confirms the job after you read its quote.
/scrapy_asset_artifacts <job_id>
Downloads what was collected.

You should see. The files, checked and packaged as the job's results.

Tip. These commands appear only where asset extraction is switched on.

Step 6 of 11 · Customer

Quick text, link, and pattern extraction

Pull text, links, or matches from a page in one command on the hosted service.

Do this

/bs4_text <url>
The page's visible text; /bs4_links gives its links.
/bs4_select <url> <css>
What a CSS selector matches.
/regex_test
Tries a pattern on sample text before you use it.
/regex_extract <url> <pattern>
Matches the pattern on a page; /regex_save keeps it by name.

You should see. The extracted text, links, or matches in the chat.

Step 7 of 11 · Customer

Use AI

Plan extractions, extract structured data, and ask questions about your data.

Do this

/llm
Shows whether AI is set up here.
/ai_plan <objective>
Drafts a safe extraction plan; on a dedicated deployment, Confirm runs it.
/ai_provider
On a dedicated deployment, adds your own AI provider.
/scrape <url> json <what to extract>
With your provider: the fields you name, as JSON.
/ai_ask
Answers from your datasets, citing the records it used.

You should see. Plans, structured data, or cited answers, from the AI provider configured here.

Tip. AI is optional. Without it, every other command works the same.

Step 8 of 11 · Customer

Use your own proxy

Send your jobs through a proxy you provide.

Do this

/proxy
How bringing your own proxy works.
/proxy_set <endpoint>
On the hosted service, stores it encrypted. Use a private chat.
/proxy_test
Checks that it works; /proxy_clear removes it.

You should see. Your jobs leave through your proxy, still subject to Scrawl's checks.

Step 9 of 11 · Customer

Your hosted account

Accept the hosted service's terms and follow your credits.

Do this

/trust_pledge
Read the Trust Pledge, then Accept pledge.
/balance
Your credit balance.
/plans
The credit packs on offer.

You should see. An account ready to run jobs on the hosted service.

Tip. The hosted service is not publicly available yet.

Step 10 of 11 · Admin

Decide who can use the bot

Give and remove access on a dedicated deployment.

Do this

/access
The access cockpit: Refresh, Grant user, Revoke user.
/access_grant <user_id>
Lets a Telegram user use the bot.
/access_revoke <user_id>
Removes their access.

You should see. The people you list can use the bot; nobody else can.

Tip. Owners are set in the deployment's configuration and cannot be revoked from Telegram.

Step 11 of 11 · Admin

Set up projects and spiders

Create a project, generate and edit spiders, and run an uploaded spider.

Do this

/scrapy_startproject <name>
Creates a project; Set active workspace selects it.
/scrapy_genspider <name> <domain>
Pick a template to generate the spider.
/scrapy_edit <spider>
Edits its source.
/scrapy_runspider
Send a spider file; Confirm runs it once it is validated.
/scrapy_shell <url>
Inspect a response: status, headers, links, a callback, or the body.

You should see. Spiders your users can run with /scrapy_crawl.

Command tree

Every command and menu, expanded.

Typed commands, menus, and the buttons inside them, with who can use each. A step link opens the part of the tutorial that walks through it.

Start and menu

The commands everyone starts with, and the inline main menu.

  • /startCommandCustomerAdmin

    Greets you and opens the main menu. Step 1

  • /helpCommandCustomerAdmin

    Lists the commands you can use. Step 1

  • /statusCommandCustomerAdmin

    Shows the bot's state and its dependencies. Step 1

  • /menuCommandCustomerAdminNeeds a dedicated deployment

    Opens the inline main menu. Step 1

  • Main menuMenuCustomerAdminNeeds a dedicated deployment

    Sections of buttons; a button that needs arguments shows how to type the command. Step 1

    • StatusButtonCustomerAdmin

      Status, version, and help.

    • ScrapyButtonCustomerAdmin

      Spiders, checks, crawl, fetch, and project commands. Step 3

    • InspectionButtonCustomerAdmin

      View, parse, guided shell, settings, and robots check. Step 2

    • Jobs & ArtifactsButtonCustomerAdmin

      Active jobs, history, results, cancel, and export format. Step 4

    • Network & IdentityButtonCustomerAdmin

      Proxy guidance and user-agent rotation. Step 8

    • AI & LLMButtonCustomerAdmin

      AI readiness and planning. Step 7

    • WorkspaceButtonAdmin

      The active project workspace. Step 11

    • AccessButtonAdmin

      Who may use this bot. Step 10

Fetch, parse, and crawl

On a dedicated deployment the same commands also work without the scrapy_ prefix: /fetch, /view, /parse, /list, /crawl, /check, /settings, /version.

  • /scrapy_fetch <url>CommandCustomer

    Fetches one checked URL. Step 2

  • /scrapy_view <url>CommandCustomer

    Shows a page's text response. Step 2

  • /scrapy_parse <url>CommandCustomer

    Parses a URL with your spider's callbacks. Step 2

    • Run defaultButtonCustomer

      Parses with the defaults.

    • Depth 0…5ButtonCustomer

      Sets how many links deep to follow.

    • Callback name / Meta JSONButtonCustomer

      Asks for a callback or request metadata.

    • Rules / No items / No linksButtonCustomer

      Shows rules, or leaves out items or links.

  • /scrapy_listCommandCustomer

    Lists the spiders you may run. Step 3

  • /scrapy_crawl <spider>CommandCustomer

    Runs a spider from the catalog as a job. Step 3

  • /scrapy_checkCommandCustomer

    Runs the project's checks. Step 3

  • /scrape <url> [links | json <what to extract>]CommandCustomerNeeds a dedicated deployment

    Scrapes one URL to Markdown, or its links; with json, the fields you name, from your own AI provider. Step 2

  • /scrapy_settingsCommandCustomer

    Shows the safety-relevant Scrapy settings.

  • /scrapy_versionCommandCustomer

    Shows the Scrapy version.

Jobs and results

Every crawl and extraction is a job you own.

  • /jobsCommandCustomer

    Lists your active jobs. Step 4

  • /historyCommandCustomer

    Shows your past jobs. Step 4

  • /cancel <job_id>CommandCustomer

    Cancels a job of yours, or ends the current prompt. Step 4

  • /artifacts <job_id>CommandCustomer

    Lists a job's results; pick one to download. Step 4

    • Preferred / Markdown / Text / JSON / Raw / Parse outputButtonCustomer

      Downloads the result in that format. Step 4

  • /exportCommandCustomer

    Sets your preferred result format. Step 4

Asset extraction

Static files linked from a page, after a quote you confirm.

  • /scrapy_extract <url>CommandCustomerNeeds asset extraction

    Extracts the static assets you choose from a page. Step 5

  • /scrapy_images, /scrapy_documents, /scrapy_data, /scrapy_media, /scrapy_webassets <url>CommandCustomerNeeds asset extraction

    Extracts one kind: images, documents, data files, direct media, or safe web assets. Step 5

  • /scrapy_asset_confirm <job_id>CommandCustomerNeeds asset extraction

    Confirms an extraction after its quote. Step 5

  • /scrapy_asset_status, /scrapy_asset_artifacts, /scrapy_asset_cancel <job_id>CommandCustomerNeeds asset extraction

    Follows, downloads, or cancels an extraction job. Step 5

Quick extraction tools

One-step text, link, selector, and pattern extraction on the hosted service.

  • /bs4_fetch, /bs4_text, /bs4_links <url>CommandCustomerNeeds the hosted service

    Raw HTML, visible text, or links from a page. Step 6

  • /bs4_select <url> <css>CommandCustomerNeeds the hosted service

    Extracts what a CSS selector matches. Step 6

  • /extract_text, /extract_links <url>CommandCustomerNeeds the hosted service

    Short forms of the text and link extractors.

  • /regex_test, /regex_extract, /regex_links, /regex_from_jobCommandCustomerNeeds the hosted service

    Tests a pattern, or matches it against a page, its links, or one of your results. Step 6

  • /regex_save, /regex_saved, /regex_delete, /regex_examplesCommandCustomerNeeds the hosted service

    Keeps named patterns, and shows safe examples. Step 6

  • /robots_check <url>CommandCustomerNeeds the hosted service

    Shows whether robots rules allow the target. Step 6

AI

Optional, and on a dedicated deployment it uses your own AI provider.

  • /llmCommandCustomer

    Shows whether AI is configured and ready. Step 7

  • /ai_plan <objective>CommandCustomerNeeds AI to be configured

    Drafts a safe extraction plan; on a dedicated deployment, Confirm runs it. Step 7

  • /ai_providerCommandCustomerNeeds a dedicated deployment, with your own AI provider

    Manages your private AI provider profiles. Step 7

  • /ai_extractCommandCustomerNeeds a dedicated deployment, with your own AI provider

    Extracts structured data from one of your results. Step 7

  • /ai_askCommandCustomerNeeds a dedicated deployment, with your own AI provider

    Answers a question from your datasets, with citations. Step 7

  • /ai_explain, /ai_debug <job_id>CommandCustomerNeeds AI on the hosted service

    Explains a job, or diagnoses one that failed. Step 7

Proxies and identity

Bring your own proxy; every request still passes Scrawl's egress checks.

  • /proxyCommandCustomer

    Explains bringing your own proxy. Step 8

  • /proxy_set <endpoint>CommandCustomerNeeds the hosted service

    Stores your proxy endpoint, encrypted; private chat only. Step 8

  • /proxy_test, /proxy_status, /proxy_clearCommandCustomerNeeds the hosted service

    Tests, shows, or removes your proxy. Step 8

  • /ua_rotatorCommandCustomerNeeds the optional rotation package on a dedicated deployment

    Turns per-user user-agent rotation on or off. Step 8

    • ON / OFFButtonCustomer

      Switches rotation.

Hosted account

Only on ApexAi's hosted service, which is not publicly available yet.

  • /trust_pledgeCommandCustomerNeeds the hosted service

    Shows the hosted service's Trust Pledge; Accept pledge records your acceptance. Step 9

  • /balanceCommandCustomerNeeds the hosted service

    Shows your hosted credit balance. Step 9

  • /plansCommandCustomerNeeds the hosted service

    Shows the hosted credit packs. Step 9

  • /buyCommandCustomerNeeds the hosted service

    Buys hosted credits with Telegram Stars. Step 9

  • /paysupportCommandCustomerNeeds the hosted service

    Payment support for the hosted service. Step 9

Admin commands

For the deployment's owners and trusted users.

  • /accessCommandAdminNeeds a dedicated deployment

    Opens the access cockpit: Refresh, Grant user, Revoke user. Step 10

  • /access_listCommandAdminNeeds a dedicated deployment

    Lists the people who may use this bot. Step 10

  • /access_grant, /access_revoke <user_id>CommandAdminNeeds a dedicated deployment

    Grants or revokes a person's access. Step 10

  • /workspace [path]CommandAdminNeeds a dedicated deployment

    Shows or changes the active project workspace. Step 11

  • /scrapy_startproject <name>CommandAdminNeeds a dedicated deployment, or a trusted account on the hosted service

    Creates a Scrapy project; Set active workspace selects it. Step 11

  • /scrapy_genspider <name> <domain>CommandAdminNeeds a dedicated deployment, or a trusted account on the hosted service

    Generates a spider; buttons pick the template (basic, crawl, csvfeed, xmlfeed). Step 11

  • /scrapy_edit <spider>CommandAdminNeeds a dedicated deployment, or a trusted account on the hosted service

    Edits a spider's source. Step 11

  • /scrapy_runspiderCommandAdminNeeds a dedicated deployment, or a trusted account on the hosted service

    Asks for a spider file; Confirm runs it after validation. Step 11

  • /scrapy_shell <url>CommandAdminNeeds a dedicated deployment, or a trusted account on the hosted service

    Guided inspection: status, headers, links, a parse callback, or the body. Step 11

  • /scrapy_benchCommandAdminNeeds benchmarks to be enabled

    Runs Scrapy's benchmark.

  • /ai_kill on | off | statusCommandAdminNeeds a dedicated deployment, with your own AI provider, owner only

    Stops or allows every call to your own AI provider on this deployment, or shows which; stopping also asks running AI jobs to end.

  • /domain_status <domain>CommandAdminNeeds the hosted service

    Shows the domain policy for a target.

Not listed: ApexAi's own administration, Ops, and AI Ops commands, which run only for the service's operators; buttons that only show how to type a command; and screens and options still in development, such as browser rendering. ApexAPI and ApexMCP, for software and agents, have their own pages.

Troubleshooting

When something does not work.

Common Scrawl problems and how to fix them
What you seeWhat to do
Menu buttons do nothing on the hosted serviceThe inline menu works on a dedicated deployment only. Type the command instead; /help lists them. Start the bot
A URL is refusedScrawl refuses private and internal addresses, and targets its policy or robots rules exclude. /robots_check shows the decision on the hosted service. Fetch and inspect a page
A command says it is not availableIt needs a deployment setting that is off here, such as asset extraction or AI. /help lists only what this deployment allows.
A job seems stuckCheck /jobs. Cancel it with /cancel <job_id> and start it again. Follow jobs and download results
I cannot use the bot at allAsk the deployment's owner to grant you access with /access_grant. Decide who can use the bot
/proxy_set is refusedSend it in a private chat with the bot, never in a group. Use your own proxy
ApexAi