//Guide
How to use any Android app from code
When an app has no API, your code can use the app itself. Axilio runs real Android phones in the cloud: your script reads the screen, finds what it needs by its text or a plain description, and taps, types and swipes the way a person would.
It works in any app on the phone and in its browser, from your own signed-in accounts: research on LinkedIn, Reddit and X, read prices and availability, buy, book and message. You write it in Python or Go.
Updated October 5, 2026. Code checked against the Python SDK, axilio 0.20.0.
What people automate
Anything a person can do in an app, a script can repeat.
1.0Use cases
Research and engagement
Search LinkedIn, Reddit and X from your own signed-in accounts, read what comes back, and act on it.
Data that lives in apps
Prices, listings, stock and availability that only show inside an app.
Real transactions
Search, compare, check out, book, check in and answer messages.
Observe, find, act, verify
Every script repeats the same four steps, the way a person uses a phone.
2.0The loopObserve
Read every line of text and every icon on the screen.
Find
Point at a target by its visible text, or describe it in plain words.
Act
Tap, type, swipe or press Enter on what you found.
Verify
Wait for the next screen before the next step, instead of sleeping.
Search X and read the results
A read-only script: it opens X on a signed-in phone, searches, and prints the text on the results screen. It doesn't post, follow or like.
3.0Examplefrom axilio.platform import Clientclient = Client() # reads AXILIO_API_KEY# A dedicated phone with X installed and signed in. The phone is# released when the block exits, even on an error.with client.session("android", phone_id="ph_123") as driver:driver.locator(query="the X app icon").tap()driver.locator(query="the search icon").tap()driver.locator(query="the Search field").fill("agentic infrastructure")driver.key_press("enter")driver.get_by_text("Top").wait_for(timeout=15)# Print every line of text on the results screen.for item in driver.observe().texts:print(item.text)
client.session()
Reserves the phone and connects to it, then releases it when the block exits, even on an error.
locator() and get_by_text()
Find the target on the live screen every time the script runs, then wait until it can be tapped.
wait_for()
Holds the next step until the results appear, for up to 15 seconds.
Find things by what they are
A script runs later, on a phone that may not match the one you wrote it on. Targets found on the live screen survive that; fixed screen positions don't.
4.0Targets
Run it without you
Save the script in Axilio and run it on demand, on one phone or many, with nobody watching.
5.0WorkflowsSave it as a workflow
Axilio keeps every revision of your Python, so you can restore an old one.
Run it on many phones
Queue a run on one phone or several at once.
See what happened
Watch a run live, replay its recording, and trace every step with its cost.
Before you start
What you need to run the example.
6.0Setup
Questions
Short answers to what people ask first.
7.0FAQ
No. The script drives the installed app through its screen, the way a person does.
Use the API. It's faster and cheaper than driving a screen.
Yes. Targets are found from the screen itself, by OCR and vision models, not from the app's accessibility tree.
Yes. Run axilio init, and Claude Code, Codex or Cursor works the task out on a phone through the CLI, then hands you the script. Give your coding agent a phone →
Either. The Go SDK has the same locators: GetByText, Locator, Tap, Fill and WaitFor.
Yes, including payments and other flows emulators can't run. For a test suite on every commit, an emulator is cheaper. Real phones vs emulators →
$15 a day, $75 a week or $180 a month per dedicated phone, with unlimited hours. Reading text with the default model is free; describing a target uses a vision model, billed per call. Pricing →