[{"data":1,"prerenderedAt":1228},["ShallowReactive",2],{"author-yaseer-sheriff":3,"content-doc-\u002Fauthors\u002Fyaseer-sheriff-inline":3,"blog-list-{\"where\":[{\"author\":\"Yaseer Sheriff\"}],\"sort\":[{\"date\":-1}]}":22},{"id":4,"title":5,"bio":6,"body":7,"date":6,"description":11,"extension":14,"image":6,"linkedin":6,"meta":15,"name":16,"navigation":17,"order":6,"path":18,"seo":19,"stem":20,"__hash__":21},"authors\u002Fauthors\u002Fyaseer-sheriff.md","Co Founder",null,{"type":8,"value":9,"toc":10},"minimark",[],{"title":11,"searchDepth":12,"depth":12,"links":13},"",3,[],"md",{},"Yaseer Sheriff",true,"\u002Fauthors\u002Fyaseer-sheriff",{"title":5,"description":11},"authors\u002Fyaseer-sheriff","9Y4gQ1pgIlmfMLCdxs5V4S26T4JsgLvkWM7U-ymdHxY",[23,785,1051],{"id":24,"title":25,"author":16,"body":26,"date":761,"description":762,"draft":763,"extension":14,"meta":764,"navigation":17,"path":781,"seo":782,"stem":783,"__hash__":784},"blog\u002Fblog\u002Fbrowser-automation-with-claude.md","Browser automation with Claude",{"type":8,"value":27,"toc":741},[28,32,40,43,46,51,54,59,62,66,69,72,76,79,82,85,88,92,95,98,107,111,114,128,131,135,138,142,146,155,165,173,177,180,186,189,193,200,203,207,214,217,220,623,637,641,649,676,682,686,689,693,696,719,722,726,737],[29,30,31],"p",{},"Claude comes with many different approaches for browser automation: Claude in Chrome, Claude Cowork, Claude Computer use, and writing scripts with Claude Code.",[29,33,34,35,39],{},"Each approach suits particular use cases; however, most are suited to doing a single task ",[36,37,38],"em",{},"once",". They are less suited to doing the same thing a thousand times, as part of a complex business process. They don't come with the batteries included to handle the edge cases of browser automation debugging, and running browsers on infrastructure at scale.",[29,41,42],{},"For that, we recommend using Claude Code and axiom.ai together. Use axiom's no-code or code system with Claude, leveraging features for debugging, monitoring, scheduling, and our other browser automation infrastructure to scale your automation beyond a single use.",[44,45],"hero-media",{"alt":25},[47,48,50],"h2",{"id":49},"driving-a-browser-with-claude","Driving a browser with Claude",[29,52,53],{},"There are several options here:",[55,56,58],"h3",{"id":57},"claude-in-chrome","Claude in Chrome",[29,60,61],{},"The easiest way to put Claude in a browser, and the one most people may reach for first, as it's from Anthropic. Claude in Chrome is a browsing agent that lives in your browser as an extension. You ask it to do something on a page and it navigates, clicks, and fills forms for you, acting on the page directly. No selectors, no script, nothing to set up beyond installing it. It is a beta product, so treat it as capable but still finding its edges. It is built for the task in front of you now, not running the same task ten thousand times.",[55,63,65],{"id":64},"claude-cowork-claude-desktop","Claude Cowork \u002F Claude Desktop",[29,67,68],{},"One step up from the extension. The desktop agent app can use Claude in Chrome as one of its tools, so instead of steering the browser yourself, you hand a multi-step job to the desktop agent and it drives the browser as part of a larger task.",[29,70,71],{},"This fits when the browsing is one piece of something beyond the browser: gather from a few sites, then write the result to a file, and use it with Excel locally. Same caveat as the extension. It is an agent deciding as it goes, so it suits open-ended work better than a fixed routine you repeat.",[55,73,75],{"id":74},"claude-computer-use-and-other-agentic-tools","Claude Computer use (and other agentic tools)",[29,77,78],{},"Claude looks at a screenshot of the screen and moves the mouse and types, the way a person would. It's not a script acting on the structure of the page. You give it a goal and an environment to act in, and it works out what to do dynamically.",[29,80,81],{},"This is the most general option and the most expensive per run (with API calls for every operation). Every step is a model call, so it costs more and runs slower than a script.",[29,83,84],{},"Agents are most suitable for dynamic tasks you cannot predict.",[29,86,87],{},"If you're running the same predictable process repeatedly, like web scraping or data mapping, you're paying a premium to use the LLM over regular code designed specifically for that task.",[55,89,91],{"id":90},"using-claude-code-to-write-code-or-no-code","Using Claude Code to write code (or no-code!)",[29,93,94],{},"Another way, and the way we recommend, is to use Claude Code to do what it's best at: write and maintain code (it also works the same way with our no-code tool).",[29,96,97],{},"We believe this is the best of both worlds: the intelligence of Claude Code when you need it, and the predictability, speed, and scalability of coded automations.",[29,99,100,101,106],{},"With ",[102,103,105],"a",{"href":104},"\u002Fbuild-in-claude","axiom's Claude skill",", we enable Claude to build and maintain browser automations.",[55,108,110],{"id":109},"claude-skill-for-browser-automations","Claude Skill for browser automations",[29,112,113],{},"A skill packages the know-how so Claude builds browser automations for you, then hands you something that can run on your local machine or our infrastructure.",[29,115,116,117,120,121,127],{},"The ",[102,118,119],{"href":104},"axiom skill"," takes a plain description and builds either a no-code automation you run in the ",[102,122,126],{"href":123,"rel":124},"https:\u002F\u002Fchromewebstore.google.com\u002Fdetail\u002Faxiom-browser-automation\u002Fcpgamigjcbffkaiciiepndmonbfdimbb",[125],"nofollow","Chrome extension",", or a coded one you drop into your stack.",[29,129,130],{},"Either way, the finished bot runs on its own, with no model call per step.",[47,132,134],{"id":133},"example-data-entry-on-a-google-form","Example: Data entry on a Google Form",[29,136,137],{},"Filling a Google Form from a sheet is a repeat job. Same form, different rows, over and over. So the agentic options carry an overhead: I do not want to pay for vision on every field of every row, and I do not want a hundred submissions riding on the model not drifting. I want something deterministic that I build once and loop.",[47,139,141],{"id":140},"automating-a-google-form-with-the-claude-skill","Automating a Google Form with the Claude skill",[55,143,145],{"id":144},"install-the-skill","Install the skill",[29,147,148,149,154],{},"The skill runs in ",[102,150,153],{"href":151,"rel":152},"https:\u002F\u002Fcode.claude.com\u002Fdocs\u002Fen\u002Foverview",[125],"Claude Code",". Open a session and run these one at a time. Pasting all three at once concatenates them and the install fails.",[156,157,162],"pre",{"className":158,"code":160,"language":161},[159],"language-text","\u002Fplugin marketplace add git@github.com:axiom-browser-automation\u002Fclaude-skill.git\n\u002Fplugin install axiom@axiom-skills\n\u002Freload-plugins\n","text",[163,164,160],"code",{"__ignoreMap":11},[29,166,167,168,172],{},"No axiom account? Tell Claude you need one and the skill signs you up and mints an API key as you build. The full steps are on the ",[102,169,171],{"href":170},"\u002Fbuild-in-claude#install","build in Claude"," page.",[55,174,176],{"id":175},"describe-the-form","Describe the form",[29,178,179],{},"Ask Claude to build an axiom and describe the Google Form the way you would explain it to a person. List the questions in order and say where each answer comes from in your sheet.",[156,181,184],{"className":182,"code":183,"language":161},[159],"Build me an axiom that fills this Google Form from my Google Sheet.\nFor each row: enter the name, select the gender, enter the email,\nenter the address, enter the zip code, then click submit and start\na new response.\n",[163,185,183],{"__ignoreMap":11},[29,187,188],{},"The skill reads that and picks a format. Ask for a schedule or to save it to your account and it builds a no-code axiom. Ask for a Node script, or name a language, and it writes code. If your ask is open, it asks you which you want.",[55,190,192],{"id":191},"build-it-no-code","Build it no-code",[29,194,195,196,199],{},"You can do the same thing with axiom's no-code ",[102,197,126],{"href":123,"rel":198},[125],", and be guided by Claude on debugging.",[29,201,202],{},"If you'd rather work with your IDE, the skill works well with VS Code, and can save it straight to your Axiom account. From there, you can run, schedule, and leverage our infrastructure.",[55,204,206],{"id":205},"or-build-it-in-code","Or build it in code",[29,208,209,210,213],{},"Ask for code instead, and the skill writes a Node script built on ",[163,211,212],{},"@axiom_ai\u002Fapi",".",[29,215,216],{},"Axiom's browser automation API and step functions solve a lot of the boilerplate necessary with Playwright and Puppeteer, adding autowaits and handling other browser edge cases.",[29,218,219],{},"The same loop, as calls you can read and keep:",[156,221,225],{"className":222,"code":223,"language":224,"meta":11,"style":11},"language-javascript shiki shiki-themes github-light-default github-dark-default","import { AxiomApi } from '@axiom_ai\u002Fapi'\n\nconst FORM = 'https:\u002F\u002Fdocs.google.com\u002Fforms\u002Fd\u002Fe\u002FFORM_ID\u002Fviewform'\n\n\u002F\u002F Each row would come from your Google Sheet\nconst rows = [\n  { name: 'Ada Lovelace', gender: 'Female', email: 'ada@example.com' },\n  { name: 'Alan Turing',  gender: 'Male',   email: 'alan@example.com' },\n]\n\nasync function main() {\n  const axiom = new AxiomApi(process.env.AXIOM_API_KEY)\n  await axiom.browserOpen()\n  try {\n    for (const row of rows) {\n      await axiom.goto(FORM)\n\n      \u002F\u002F Match each field by its aria-label so a reorder does not break it\n      await axiom.enterText('input[aria-label=\"Name\"]', row.name)\n      await axiom.click(`div[role=\"radio\"][aria-label=\"${row.gender}\"]`)\n      await axiom.enterText('input[aria-label=\"Email\"]', row.email)\n\n      await axiom.click('div[role=\"button\"][aria-label=\"Submit\"]')\n      await axiom.click('a[aria-label=\"Submit another response\"]')\n    }\n  } finally {\n    await axiom.browserClose()\n  }\n}\n\nawait main()\n","javascript",[163,226,227,247,253,268,273,280,293,317,339,345,350,366,392,407,416,436,455,460,466,484,512,529,534,550,566,572,583,596,602,608,613],{"__ignoreMap":11},[228,229,232,236,240,243],"span",{"class":230,"line":231},"line",1,[228,233,235],{"class":234},"sjeE4","import",[228,237,239],{"class":238},"s4rv2"," { AxiomApi } ",[228,241,242],{"class":234},"from",[228,244,246],{"class":245},"sSVrQ"," '@axiom_ai\u002Fapi'\n",[228,248,250],{"class":230,"line":249},2,[228,251,252],{"emptyLinePlaceholder":17},"\n",[228,254,255,258,262,265],{"class":230,"line":12},[228,256,257],{"class":234},"const",[228,259,261],{"class":260},"sHrmB"," FORM",[228,263,264],{"class":234}," =",[228,266,267],{"class":245}," 'https:\u002F\u002Fdocs.google.com\u002Fforms\u002Fd\u002Fe\u002FFORM_ID\u002Fviewform'\n",[228,269,271],{"class":230,"line":270},4,[228,272,252],{"emptyLinePlaceholder":17},[228,274,276],{"class":230,"line":275},5,[228,277,279],{"class":278},"sU953","\u002F\u002F Each row would come from your Google Sheet\n",[228,281,283,285,288,290],{"class":230,"line":282},6,[228,284,257],{"class":234},[228,286,287],{"class":260}," rows",[228,289,264],{"class":234},[228,291,292],{"class":238}," [\n",[228,294,296,299,302,305,308,311,314],{"class":230,"line":295},7,[228,297,298],{"class":238},"  { name: ",[228,300,301],{"class":245},"'Ada Lovelace'",[228,303,304],{"class":238},", gender: ",[228,306,307],{"class":245},"'Female'",[228,309,310],{"class":238},", email: ",[228,312,313],{"class":245},"'ada@example.com'",[228,315,316],{"class":238}," },\n",[228,318,320,322,325,328,331,334,337],{"class":230,"line":319},8,[228,321,298],{"class":238},[228,323,324],{"class":245},"'Alan Turing'",[228,326,327],{"class":238},",  gender: ",[228,329,330],{"class":245},"'Male'",[228,332,333],{"class":238},",   email: ",[228,335,336],{"class":245},"'alan@example.com'",[228,338,316],{"class":238},[228,340,342],{"class":230,"line":341},9,[228,343,344],{"class":238},"]\n",[228,346,348],{"class":230,"line":347},10,[228,349,252],{"emptyLinePlaceholder":17},[228,351,353,356,359,363],{"class":230,"line":352},11,[228,354,355],{"class":234},"async",[228,357,358],{"class":234}," function",[228,360,362],{"class":361},"sbjLL"," main",[228,364,365],{"class":238},"() {\n",[228,367,369,372,375,377,380,383,386,389],{"class":230,"line":368},12,[228,370,371],{"class":234},"  const",[228,373,374],{"class":260}," axiom",[228,376,264],{"class":234},[228,378,379],{"class":234}," new",[228,381,382],{"class":361}," AxiomApi",[228,384,385],{"class":238},"(process.env.",[228,387,388],{"class":260},"AXIOM_API_KEY",[228,390,391],{"class":238},")\n",[228,393,395,398,401,404],{"class":230,"line":394},13,[228,396,397],{"class":234},"  await",[228,399,400],{"class":238}," axiom.",[228,402,403],{"class":361},"browserOpen",[228,405,406],{"class":238},"()\n",[228,408,410,413],{"class":230,"line":409},14,[228,411,412],{"class":234},"  try",[228,414,415],{"class":238}," {\n",[228,417,419,422,425,427,430,433],{"class":230,"line":418},15,[228,420,421],{"class":234},"    for",[228,423,424],{"class":238}," (",[228,426,257],{"class":234},[228,428,429],{"class":260}," row",[228,431,432],{"class":234}," of",[228,434,435],{"class":238}," rows) {\n",[228,437,439,442,444,447,450,453],{"class":230,"line":438},16,[228,440,441],{"class":234},"      await",[228,443,400],{"class":238},[228,445,446],{"class":361},"goto",[228,448,449],{"class":238},"(",[228,451,452],{"class":260},"FORM",[228,454,391],{"class":238},[228,456,458],{"class":230,"line":457},17,[228,459,252],{"emptyLinePlaceholder":17},[228,461,463],{"class":230,"line":462},18,[228,464,465],{"class":278},"      \u002F\u002F Match each field by its aria-label so a reorder does not break it\n",[228,467,469,471,473,476,478,481],{"class":230,"line":468},19,[228,470,441],{"class":234},[228,472,400],{"class":238},[228,474,475],{"class":361},"enterText",[228,477,449],{"class":238},[228,479,480],{"class":245},"'input[aria-label=\"Name\"]'",[228,482,483],{"class":238},", row.name)\n",[228,485,487,489,491,494,496,499,502,504,507,510],{"class":230,"line":486},20,[228,488,441],{"class":234},[228,490,400],{"class":238},[228,492,493],{"class":361},"click",[228,495,449],{"class":238},[228,497,498],{"class":245},"`div[role=\"radio\"][aria-label=\"${",[228,500,501],{"class":238},"row",[228,503,213],{"class":245},[228,505,506],{"class":238},"gender",[228,508,509],{"class":245},"}\"]`",[228,511,391],{"class":238},[228,513,515,517,519,521,523,526],{"class":230,"line":514},21,[228,516,441],{"class":234},[228,518,400],{"class":238},[228,520,475],{"class":361},[228,522,449],{"class":238},[228,524,525],{"class":245},"'input[aria-label=\"Email\"]'",[228,527,528],{"class":238},", row.email)\n",[228,530,532],{"class":230,"line":531},22,[228,533,252],{"emptyLinePlaceholder":17},[228,535,537,539,541,543,545,548],{"class":230,"line":536},23,[228,538,441],{"class":234},[228,540,400],{"class":238},[228,542,493],{"class":361},[228,544,449],{"class":238},[228,546,547],{"class":245},"'div[role=\"button\"][aria-label=\"Submit\"]'",[228,549,391],{"class":238},[228,551,553,555,557,559,561,564],{"class":230,"line":552},24,[228,554,441],{"class":234},[228,556,400],{"class":238},[228,558,493],{"class":361},[228,560,449],{"class":238},[228,562,563],{"class":245},"'a[aria-label=\"Submit another response\"]'",[228,565,391],{"class":238},[228,567,569],{"class":230,"line":568},25,[228,570,571],{"class":238},"    }\n",[228,573,575,578,581],{"class":230,"line":574},26,[228,576,577],{"class":238},"  } ",[228,579,580],{"class":234},"finally",[228,582,415],{"class":238},[228,584,586,589,591,594],{"class":230,"line":585},27,[228,587,588],{"class":234},"    await",[228,590,400],{"class":238},[228,592,593],{"class":361},"browserClose",[228,595,406],{"class":238},[228,597,599],{"class":230,"line":598},28,[228,600,601],{"class":238},"  }\n",[228,603,605],{"class":230,"line":604},29,[228,606,607],{"class":238},"}\n",[228,609,611],{"class":230,"line":610},30,[228,612,252],{"emptyLinePlaceholder":17},[228,614,616,619,621],{"class":230,"line":615},31,[228,617,618],{"class":234},"await",[228,620,362],{"class":361},[228,622,406],{"class":238},[29,624,625,626,629,630,632,633,636],{},"Run it with ",[163,627,628],{},"npm install @axiom_ai\u002Fapi",", set ",[163,631,388],{}," in your environment, then ",[163,634,635],{},"node"," the file. The browser runs in axiom's cloud, so there is nothing to install locally.",[55,638,640],{"id":639},"target-each-question-by-its-label","Target each question by its label",[29,642,643,644,648],{},"Google Forms is the one part worth getting right yourself, no-code or code. It renders each question as a block with no stable id, so a selector tied to position breaks the moment someone reorders a question. Match on the field's aria-label instead. In the ",[102,645,647],{"href":646},"\u002Fdocs\u002Fno-code-tool\u002Fthe-builder\u002Fselector-tool","selector tool",", switch to a custom CSS selector:",[156,650,654],{"className":651,"code":652,"language":653,"meta":11,"style":11},"language-css shiki shiki-themes github-light-default github-dark-default","input[aria-label=\"Email\"]\n","css",[163,655,656],{"__ignoreMap":11},[228,657,658,662,665,668,671,674],{"class":230,"line":231},[228,659,661],{"class":660},"sjgCt","input",[228,663,664],{"class":238},"[",[228,666,667],{"class":260},"aria-label",[228,669,670],{"class":234},"=",[228,672,673],{"class":245},"\"Email\"",[228,675,344],{"class":238},[29,677,678,679,213],{},"That finds the field by its accessible label rather than where it sits on the page, so the step keeps working when the form changes. It is the same idea in code: ",[163,680,681],{},"axiom.enterText('input[aria-label=\"Email\"]', row.email)",[55,683,685],{"id":684},"run-one-then-loop","Run one, then loop",[29,687,688],{},"Run a single row first and check the form's response Sheet. One good row proves the mapping before you turn it loose. Then loop the rest: on the desktop app while you watch, or in the cloud once it is solid. The skill asks before it saves to your account or spends cloud runtime, so nothing runs without your say-so.",[47,690,692],{"id":691},"what-id-watch-out-for","What I'd watch out for",[29,694,695],{},"Google Forms looks simple, and mostly it is. A few things trip a bot.",[697,698,699,707,713],"ul",{},[700,701,702,706],"li",{},[703,704,705],"strong",{},"File uploads need a Google sign-in."," A file upload question only works when the run is signed into a Google account. Store the cookies for that account, or leave upload questions out.",[700,708,709,712],{},[703,710,711],{},"Required questions and validation stop a submit."," If a required field is empty or an answer fails validation, the run stalls on the first row. Map every required question before you loop.",[700,714,715,718],{},[703,716,717],{},"Test one response first."," It is far easier than deleting a hundred bad ones later.",[29,720,721],{},"This is for forms you are meant to fill: submitting your own entries from a spreadsheet, registering a list of people, seeding a form with test responses before launch. Stuffing a poll, rigging a ballot, or sending spam is not, and it is against Google's terms.",[47,723,725],{"id":724},"where-to-go-next","Where to go next",[29,727,728,729,732,733,736],{},"To go no-code, install the ",[102,730,126],{"href":123,"rel":731},[125],"; to build with code, add the ",[102,734,735],{"href":104},"Claude skill",". The short version: Claude is the builder, the axiom bot is what runs. Use Claude to get from a description to a working automation, then let the automation handle the thousand rows.",[738,739,740],"style",{},"html pre.shiki code .sjeE4, html code.shiki .sjeE4{--shiki-default:#CF222E;--shiki-dark:#FF7B72}html pre.shiki code .s4rv2, html code.shiki .s4rv2{--shiki-default:#1F2328;--shiki-dark:#E6EDF3}html pre.shiki code .sSVrQ, html code.shiki .sSVrQ{--shiki-default:#0A3069;--shiki-dark:#A5D6FF}html pre.shiki code .sHrmB, html code.shiki .sHrmB{--shiki-default:#0550AE;--shiki-dark:#79C0FF}html pre.shiki code .sU953, html code.shiki .sU953{--shiki-default:#6E7781;--shiki-dark:#8B949E}html pre.shiki code .sbjLL, html code.shiki .sbjLL{--shiki-default:#8250DF;--shiki-dark:#D2A8FF}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sjgCt, html code.shiki .sjgCt{--shiki-default:#116329;--shiki-dark:#7EE787}",{"title":11,"searchDepth":12,"depth":12,"links":742},[743,750,751,759,760],{"id":49,"depth":249,"text":50,"children":744},[745,746,747,748,749],{"id":57,"depth":12,"text":58},{"id":64,"depth":12,"text":65},{"id":74,"depth":12,"text":75},{"id":90,"depth":12,"text":91},{"id":109,"depth":12,"text":110},{"id":133,"depth":249,"text":134},{"id":140,"depth":249,"text":141,"children":752},[753,754,755,756,757,758],{"id":144,"depth":12,"text":145},{"id":175,"depth":12,"text":176},{"id":191,"depth":12,"text":192},{"id":205,"depth":12,"text":206},{"id":639,"depth":12,"text":640},{"id":684,"depth":12,"text":685},{"id":691,"depth":249,"text":692},{"id":724,"depth":249,"text":725},"2026-07-03","An overview of ways to drive a browser with Claude, and an intro to using Claude code with axiom.",false,{"metaTitle":25,"read":765,"type":766,"tool":767,"category":769,"tags":771,"location":778,"featuredimg":779,"landingimg":780,"summary":762},"8 min read","no-code",[768],"No-code tool",[770],"Browser automation",[772,773,774,775,776,777],"claude","ai","claude in chrome","cowork","computer use","google forms","London","\u002Fblog\u002Fbrowser-automation-with-claude-hero.webp","\u002Flanding\u002Fhn-scraper-claude.webp","\u002Fblog\u002Fbrowser-automation-with-claude",{"title":25,"description":762},"blog\u002Fbrowser-automation-with-claude","bnOY_J6k7OMwbEB8k2mh3Kf4p58FtNB0-Bsqd0PvYYs",{"id":786,"title":787,"author":16,"body":788,"date":1035,"description":792,"draft":763,"extension":14,"meta":1036,"navigation":17,"path":1047,"seo":1048,"stem":1049,"__hash__":1050},"blog\u002Fblog\u002Faxiom-zapier.md","Use Zapier and Axiom together to automate anything!",{"type":8,"value":789,"toc":1026},[790,793,796,799,802,805,808,825,828,832,842,845,848,851,855,859,862,865,868,871,875,878,881,884,887,891,894,897,900,903,906,909,912,916,919,922,929,933,982,986,989,998,1001],[29,791,792],{},"If you work with no-code tools, you've probably worked with Zapier - the web's original glue to connect web-apps.",[29,794,795],{},"If there's an API for it, chances are, there's a Zap to automate it.",[29,797,798],{},"But what if there's no Zapier Integration, or the API is incomplete?",[29,800,801],{},"This is where tools like Axiom come in - using the two together means you can automate anything",[44,803],{"alt":804},"Combine browser and api automation with axiom.ai and Zapier",[29,806,807],{},"Here's a few examples:",[697,809,810,813,816,819,822],{},[700,811,812],{},"Scraping prices on a schedule, then triggering a Zap when the price changes",[700,814,815],{},"Fulfilling an order on a supplier's site, when someone buys on Shopify or Amazon",[700,817,818],{},"Managing 100s of customer accounts, on Amazon, YouTube and Social Media",[700,820,821],{},"Monitoring a booking form for availability, booking and triggering a Zap when availability opens",[700,823,824],{},"Automating government websites and banks without APIs, then triggering Zaps on top, to build new fintech companies",[29,826,827],{},"Plus many more! Uzing Zapier and Axiom together let's you achieve much more than either tool alone.",[47,829,831],{"id":830},"zapier-how-does-it-work","Zapier - How does it work?",[29,833,834,835,838,839,213],{},"Zapier automates using Zapier apps, each of which provides API integration with a particular piece of software. There are thousands upon thousands of apps in Zapier's comprehensive store, and each one provides API integrations by supplying ",[36,836,837],{},"triggers"," and ",[36,840,841],{},"actions",[29,843,844],{},"A trigger is an event that an app fires whenever a particular thing happens. For example, the Gmail app has a trigger that fires when an email hits your inbox.",[29,846,847],{},"An action is something an app can do in response to a trigger. For example, in the JIRA app, you might have an action which creates a new ticket.",[29,849,850],{},"Within Zapier, you can then use these triggers and actions to link systems together and create larger workflows. By combining the above trigger and action, you can now create a ticket in JIRA whenever an email lands in your inbox. Pretty cool!",[852,853],"img",{"src":854},"\u002Fblog\u002Fzapier-jira.png",[47,856,858],{"id":857},"axiom-how-does-it-work","Axiom - How does it work?",[29,860,861],{},"Axiom automates your work by using browser actions input into a website's user interface (UI).",[29,863,864],{},"This means that you can automate anything that you manually do yourself. Clicking on buttons, selecting items from lists, entering text into forms and copying and pasting data from one place to another are some of the most common browser actions, and ones you likely do many hundreds - even thousands - of times each day.",[29,866,867],{},"What's great about this is that for axiom to work, you don't need API access; just some kind of browser-based user interface, which all web software has. You can then do anything the interface allows you to do, without having to rely on the site's developers having implemented an API trigger or action.",[852,869],{"src":870},"\u002Fblog\u002Faxiom-example.png",[47,872,874],{"id":873},"zapier-when-do-i-use-it","Zapier - When do I use it?",[29,876,877],{},"If there's a Zapier integration and it contains the triggers and actions you need, we recommend using it!",[29,879,880],{},"APIs are very well defined, and don't often change. If they do, the changes are usually tightly controlled behind different versions of the app - a feature Zapier supports well. This makes the connection very reliable.",[29,882,883],{},"Zapier's trigger system is also powerful because it lets you respond to events in real time. This cuts out complexity compared to more passive systems, which have to read lists of data and then determine what to do for each item. Zapier skips all of that by listening to the app directly, and immediately acting when it receives a signal.",[29,885,886],{},"However, there are scenarios when a system has a limited (or nonexistent) API, or where integrating using the provided API is abstract or unintuitive. Data can be formatted in ways that are hard to understand, and it can be tricky to figure out what you need to do.",[47,888,890],{"id":889},"axiom-when-do-i-use-it","Axiom - When do I use it?",[29,892,893],{},"This is where axiom excels. Because it uses the UI, and because every website has a UI, it doesn't matter whether a particular API trigger or action has been implemented - if you can do it, so can axiom.",[29,895,896],{},"This can be very useful in data extraction (web scraping), where many platforms don't give API access to their data. Social media platforms like LinkedIn or Instagram are unlikely to ever have Zaps.",[29,898,899],{},"UI automation can also be used for data entry by typing the required data directly into web forms. This is often useful with government forms, legacy systems, and niche e-commerce applications.",[29,901,902],{},"Smaller tools that are earlier in their development cycle have also often not yet had the resources to build an API, so this can be a great option for integrating with their functionality early.",[29,904,905],{},"Even if an API is provided, UI automation may be the more intuitive choice for non-coders.",[29,907,908],{},"For example, if you’re copy-pasting data from a complex analytics system into a spreadsheet, it's often easier to visually select data as it appears on-screen rather than trying to understand the data output of an API. In these systems, the UI's job is to make complex information digestible, and you can take advantage of this in your automation.",[29,910,911],{},"Finally, building an automation in a way that mirrors your normal work will often be easier to create, understand and maintain. This is because you don't have to map your existing well-understood process into a different one in order to automate it.",[47,913,915],{"id":914},"no-code-tools-are-most-powerful-when-used-together","No-code tools are most powerful when used together",[29,917,918],{},"The magic really starts to happen when you combine Zapier and Axiom together, giving you the best of both worlds.",[29,920,921],{},"By using these tools together, you can automate literally anything - and that’s not an exaggeration!",[29,923,924,925,213],{},"Learn more about why: ",[102,926,928],{"href":927},"\u002Fblog\u002Fconnect-no-code-together-to-build-product-ideas","connecting no-code tools together is the best way to build something new",[47,930,932],{"id":931},"examples","Examples",[697,934,935,951,966],{},[700,936,937,940],{},[703,938,939],{},"Fulfilling an order on a supplier's site, when someone buys on Shopify",[697,941,942,945,948],{},[700,943,944],{},"In this case, the shop was a niche e-commerce storefront which did not have an API",[700,946,947],{},"Previously, they had to manually enter orders received in Shopify into the second store - very tedious!",[700,949,950],{},"By combining a Shopify \"new order\" trigger in Zapier with a UI automation to copy the data into the shopping cart of the other storefront, they were able to automate the whole process",[700,952,953,955],{},[703,954,812],{},[697,956,957,960,963],{},[700,958,959],{},"Price monitoring is common across lots of industries: e-commerce, crypto, real-estate to name but a few",[700,961,962],{},"Most prices are not available via API - you need a scraper",[700,964,965],{},"By detecting the price change with Axiom and then sending this information to Zapier, you can hook into a huge number of other apps",[700,967,968,971],{},[703,969,970],{},"Managing multiple customer accounts, on Amazon, YouTube and Social Media",[697,972,973,976,979],{},[700,974,975],{},"Agencies are prolific Zap users that automate to stay time-efficient. Unfortunately, Zaps can't automate every aspect of customer account management.",[700,977,978],{},"We see agencies logging in and out of customer accounts on Amazon or YouTube, then repeating the same steps, such as generating a report, downloading or uploading files, and managing stock or assets",[700,980,981],{},"Axiom is a great way to automate the repetitive steps on each account, whilst tying into their existing Zaps",[47,983,985],{"id":984},"how-do-i-use-zapier-and-axiom-together","How do I use Zapier and Axiom together?",[29,987,988],{},"Axiom has a Zapier app available on the pro tier, so you can trigger axiom from any Zapier integration:",[697,990,991],{},[700,992,993,997],{},[102,994,996],{"href":995},"\u002Fdocs\u002Fno-code-tool\u002Fintegrations\u002Fzapier#trigger-axiom-from-zapier","Trigger Axiom from Zapier","\nIt's possible to trigger Zapier from Axiom using either webhooks, or Google Sheets, which is available on our free tier.",[29,999,1000],{},"Use webhooks when the data sent to Zapier will be relatively small:",[697,1002,1003,1010],{},[700,1004,1005,1009],{},[102,1006,1008],{"href":1007},"\u002Fdocs\u002Fno-code-tool\u002Fintegrations\u002Fzapier#trigger-zapier-from-axiom","Trigger Zapier by Webhook","\nIf large volumes of data are being sent, both Zapier and Axiom have deep sheets integration, which makes data-driven automations much easier to handle:",[700,1011,1012,1016,1017,1021,1022,213],{},[102,1013,1015],{"href":1014},"\u002Fblog\u002Fhow-to-automate-data-google-sheets","Trigger Zapier with Google Sheets","\nIf we can be of help, please don't hesitate to contact us for ",[102,1018,1020],{"href":1019},"\u002Fcustomer-support","one-on-one help"," or take a look at our ",[102,1023,1025],{"href":1024},"\u002Fdocs","Documentation",{"title":11,"searchDepth":12,"depth":12,"links":1027},[1028,1029,1030,1031,1032,1033,1034],{"id":830,"depth":249,"text":831},{"id":857,"depth":249,"text":858},{"id":873,"depth":249,"text":874},{"id":889,"depth":249,"text":890},{"id":914,"depth":249,"text":915},{"id":931,"depth":249,"text":932},{"id":984,"depth":249,"text":985},"2022-06-06",{"read":1037,"type":766,"tool":1038,"category":1039,"tags":1041,"location":778,"featuredimg":1044,"landingimg":1045,"summary":1046},"10 min read",[768],[1040],"Workflow automation",[1042,1043],"api","zapier","\u002Fblog\u002Fzapier-axiom.ai.jpg","\u002Fblog\u002Fzapier-and-axiom.png","Plug gaps in your Zaps and automate all your work.","\u002Fblog\u002Faxiom-zapier",{"title":787,"description":792},"blog\u002Faxiom-zapier","oKgsgXda6cB1CuAftZ9kP4OL6jUR8IFEMnos7ftVHtU",{"id":1052,"title":1053,"author":16,"body":1054,"date":1214,"description":1058,"draft":763,"extension":14,"meta":1215,"navigation":17,"path":1224,"seo":1225,"stem":1226,"__hash__":1227},"blog\u002Fblog\u002Frpa-api-automation.md","RPA vs API automation, what should I use?",{"type":8,"value":1055,"toc":1206},[1056,1059,1062,1065,1069,1072,1075,1078,1081,1084,1087,1091,1094,1097,1100,1103,1107,1110,1113,1116,1119,1122,1125,1128,1131,1134,1138,1141,1144,1147,1150,1153,1156,1159,1163,1166,1169,1172,1175,1179,1182,1185,1196,1199],[29,1057,1058],{},"The automation landscape contains a lot of confusing jargon. APIs? RPA? …Intelligent Automation?",[29,1060,1061],{},"Let’s cut through some  noise and start with the basics - most automations these days are built with APIs by developers.",[44,1063],{"alt":1064},"RPA or API automation?",[47,1066,1068],{"id":1067},"whats-api-automation","What’s API Automation?",[29,1070,1071],{},"An ‘API’ is an ‘Application Programming Interface’. It allows a programming language to provide instructions to a web-application, or other piece of software.",[29,1073,1074],{},"Stripe is quite a well known API for payments. You can hire a developer to build a payment system in pretty much any programming language you’d like.",[29,1076,1077],{},"There’s plenty of no-code tools to take payments without hiring a developer too.",[29,1079,1080],{},"Some of the most well-known no-code tools for API automation are Zapier, Integromat and Tray.io.",[29,1082,1083],{},"Want to Connect Google Sheets to Typeform?",[29,1085,1086],{},"There are APIs into both, so there’s a Zap for that.",[47,1088,1090],{"id":1089},"no-api-use-the-user-interface-rpa-is-ui-automation","No API? Use the User Interface. RPA is UI Automation",[29,1092,1093],{},"The only way to Automate software without an API is to use whatever interface a human does - usually the User Interface (UI).",[29,1095,1096],{},"This is often known as ‘Robotic Process Automation’ (RPA).",[29,1098,1099],{},"RPA has become really popular in the last 5 years or so, thanks to companies like UiPath that provide RPA Developer tools for Enterprises.",[29,1101,1102],{},"As RPA became more popular, marketing around AI and ‘Intelligent Automation’ may have blurred its original meaning. RPA really just means ‘User Interface Automation’. RPA vs Intelligent automation is a whole other topic we could talk about, but it's a subject for another article.",[47,1104,1106],{"id":1105},"what-advantages-does-ui-automation-have-over-api-automation","What advantages does UI Automation have over API Automation?",[29,1108,1109],{},"Often, a system just doesn’t have an API, so UI automation is the only choice.",[29,1111,1112],{},"But this isn’t the only reason.",[29,1114,1115],{},"UI Automation is common for data scraping, but it’s also common to use it for data-entry into forms, where creating APIs are not part of the technology focus. We see this often with government forms, legacy systems, and niche e-commerce applications.",[29,1117,1118],{},"Even with APIs, UI Automation is often more intuitive for non-coders in particular.",[29,1120,1121],{},"If you’re copy-pasting data from an analytics system into a spreadsheet, building a UI bot to do this may be faster than accessing analytics and spreadsheet APIs.",[29,1123,1124],{},"We see this often with YouTube and other analytics reporting. Visually selecting data as it appears in-context during your normal working day is much more intuitive than going into API documentation and parsing a data-feed into the correct format.",[29,1126,1127],{},"There are also cases where automation needs human and machine input to work together. Perhaps an automation can’t run end-to-end, but needs to hand back to the human to decide.",[29,1129,1130],{},"Browser automation excels at these cases, sometimes called ‘Attended Automation’. Zapier can’t really handle these.",[29,1132,1133],{},"Finally, we see cases when UI automation - which closely mimics a person’s real work - is just faster than API automation. You already know the specification and implementation details because you’re doing the work already. This is particularly important for the long-tail of small automations that are too small to hire a developer.",[47,1135,1137],{"id":1136},"what-are-the-disadvantages-of-ui-automation","What are the disadvantages of UI Automation?",[29,1139,1140],{},"UI Automation can be hard to get right!",[29,1142,1143],{},"Your application may change, breaking the UI Automation. APIs don’t change often, and if they do, they’re often versioned for backward compatibility. Not so with UIs.",[29,1145,1146],{},"The automation may need to detect and fix the change. More often though, a human being may need to make an amendment.",[29,1148,1149],{},"Many applications block automations if data is key to their business model - LinkedIn is perhaps the most well-known example.",[29,1151,1152],{},"LinkedIn does not make it easy to select data - changing page structure regularly + rate-limiting profile views. It’s not possible to extract large data-sets from places like LinkedIn, or Crunchbase, without getting into an arms race for bot detection.",[29,1154,1155],{},"This means creating multiple accounts, rotating these, and perhaps rotating your IP address via a VPN alongside. This can create a lot of admin overhead.",[29,1157,1158],{},"It’s for this reason, we don’t recommend UI automation for extracting large data-sets, particularly from companies like LinkedIn or Crunchbase where data is a protected part of their business.",[47,1160,1162],{"id":1161},"which-automation-tool-is-the-right-one-for-the-job","Which automation tool is the right one for the job?",[29,1164,1165],{},"You should use APIs, if one exists, and it is intuitive enough to use for your use-case. There may be a template on Zapier or Integromat - check those places first.",[29,1167,1168],{},"If no API exists, or the UI is the most intuitive way to access your data - perhaps UI Automation tools like Axiom or UiPath are a good fit.",[29,1170,1171],{},"If you have a development team, and your automation is large, and for a large enterprise, enterprise RPA tools like UiPath are your best bet.",[29,1173,1174],{},"If you have a smaller automation, your API access is limited, or you just want to get an automation up quickly to mimic your existing workflow - Tools like axiom are a good fit.",[47,1176,1178],{"id":1177},"ui-api-together-plug-gaps-in-your-zaps","UI + API together. Plug gaps in your Zaps",[29,1180,1181],{},"We’ve observed that customers get the most value when they use API automation and UI Automation together.",[29,1183,1184],{},"In axiom’s case, we have a Zapier app & webhook integration, which has proven to be quite popular.  We’ve seen customers automate tasks as varied as:",[697,1186,1187,1190,1193],{},[700,1188,1189],{},"Generating reports in YouTube Studio when new data is generated",[700,1191,1192],{},"Fulfilling an order by inputting data into a form, when an email is received",[700,1194,1195],{},"Scrape NFT data on a schedule or custom event",[29,1197,1198],{},"Using UI Automation + API Automation together means you can literally automate anything - that’s not an exaggeration. Our customers often surprise us by automating things we would never have guessed!",[29,1200,1201,1202,1021,1204,213],{},"If we can be of help, please don't hesitate to contact us for ",[102,1203,1020],{"href":1019},[102,1205,1025],{"href":1024},{"title":11,"searchDepth":12,"depth":12,"links":1207},[1208,1209,1210,1211,1212,1213],{"id":1067,"depth":249,"text":1068},{"id":1089,"depth":249,"text":1090},{"id":1105,"depth":249,"text":1106},{"id":1136,"depth":249,"text":1137},{"id":1161,"depth":249,"text":1162},{"id":1177,"depth":249,"text":1178},"2022-04-07",{"read":1216,"type":766,"tool":1217,"category":1218,"tags":1219,"location":778,"featuredimg":1044,"landingimg":1222,"summary":1223},"5 min read",[768],[770],[1220,1042,1221],"automation","rpa","\u002Fblog\u002Fboxing.jpg","Confused by RPA and APIs? We explain both approaches without jargon.","\u002Fblog\u002Frpa-api-automation",{"title":1053,"description":1058},"blog\u002Frpa-api-automation","-oGyFo_yY5DbFEpLHyd0BXXGMb_moIkOFj2jULhagxE",1783069611596]