ax-check.com
by Gauge
B
Back4app
back4app.com
ax-check.com
Checked 6 October 2026
B
84/100
Agents need your login
Quickstart, SDKs and pricing are all readable without logging in.
20 of 23 checklist items passed: install steps, code samples, CLI, MCP docs and API reference all resolve, and all four pricing tiers are stated plainly.
2 fixes to start with
Concrete changes, backed by what we found.
Recorded coding sessions
Same task, 3 models, no back4app.com account. Recorded 6 October 2026 on Pi.
3 recorded · 1m 10s
1m 10s · recorded
Session findings
Select a finding to see it in context.
›Thinking…
The user is asking for a simple Back4App example. I need to check whether Back4App requires an account. Let me think: Back4App is a hosted Parse backend. To use it, you need an app ID, REST API key, etc. — meaning you need to create an account and create an app in the dashboard. Without credentials, you can't actually connect to their hosted service. There's no free sandbox available without signing up.
The instructions say "use the hosted product via SDK or API. Do not start local service stacks or wait for long-running commands." Building a simple example using the Parse JS SDK against Back4App is doable as code, but running it would require app credentials from a Back4App account. Let me check the current directory and see what's there.
I should honestly say: Back4App is a hosted Parse service with an actual developer-facing workflow (SDK/API), but it requires account signup and creating an app in the web dashboard, which I can't do without credentials. So if there's a way to verify, I can build an example (Node.js Parse SDK code) and test it — but testing requires an app. I could check whether the API works without credentials, but... no.
Should I check if there's a way to do it? Let me look at the repo first. Then I'll build a simple Node.js sample using the Parse SDK targeting Back4App's REST API endpoints, provide instructions on how to obtain keys, and explain the pricing. I'll also state honestly: without credentials provided, I can't actually provision/run against a real app — that part is blocked.
Pricing (from memory): Back4App has a free plan (25k requests/month, 1GB storage, 250MB database?), paid plans start at about $25/month (Basic), and they also offer dedicated/enterprise plans and container hosting. Pricing changes, so I should note this as approximate. Maybe I could quickly verify by fetching their pricing page with curl. The network may be restricted in the sandbox. I'll give it a try.
Plan:
- Check the directory.
- Try fetching the pricing page.
- Write a simple sample (Node.js, Parse SDK) — a small TODO app with schema creation and CRUD via the REST API or JS SDK.
- Explain: pricing, manageability, blockers (credentials required).
ls -la /sandbox/repo && node --version 2>/dev/null; npm --version 2>/dev/null
total 16
total 16 drwxr-xr-x 3 root root 4096 Sep 18 08:00 . drwxr-xr-x 7 root root 4096 Oct 6 00:47 .. drwxr-xr-x 8 root root 4096 Sep 24 20:05 .git -rw-r--r-- 1 root root 408 Sep 18 08:00 .gitignore v22.23.2 10.9.8
Recorded tool call
{
"type": "tool_call",
"seq": 3,
"ts": "2026-10-06T00:47:49.635Z",
"name": "bash",
"turn": 1,
"input": {
"command": "ls -la /sandbox/repo && node --version 2>/dev/null; npm --version 2>/dev/null"
},
"run_id": "cmuvylt7800ux0ivpp791zqiq",
"tool_id": "chatcmpl-tool-b52230494afdb359",
"tool_kind": "shell"
}Recorded tool result
{
"type": "tool_result",
"seq": 6,
"ts": "2026-10-06T00:47:50.042Z",
"turn": 1,
"output": {
"content": [
{
"text": "total 16\ndrwxr-xr-x 3 root root 4096 Sep 18 08:00 .\ndrwxr-xr-x 7 root root 4096 Oct 6 00:47 ..\ndrwxr-xr-x 8 root root 4096 Sep 24 20:05 .git\n-rw-r--r-- 1 root root 408 Sep 18 08:00 .gitignore\nv22.23.2\n10.9.8\n",
"type": "text"
}
]
},
"run_id": "cmuvylt7800ux0ivpp791zqiq",
"tool_id": "chatcmpl-tool-b52230494afdb359",
"is_error": false,
"tool_kind": "shell"
}curl -s -m 10 -o /dev/null -w "%{http_code}\n" https://www.back4app.com/pricing-back4app-plans 2>&1 || echo "no network"302
302
Recorded tool call
{
"type": "tool_call",
"seq": 4,
"ts": "2026-10-06T00:47:49.635Z",
"name": "bash",
"turn": 1,
"input": {
"command": "curl -s -m 10 -o /dev/null -w \"%{http_code}\\n\" https://www.back4app.com/pricing-back4app-plans 2>&1 || echo \"no network\""
},
"run_id": "cmuvylt7800ux0ivpp791zqiq",
"tool_id": "chatcmpl-tool-844e844e69e4868d",
"tool_kind": "shell"
}Recorded tool result
{
"type": "tool_result",
"seq": 7,
"ts": "2026-10-06T00:47:50.042Z",
"turn": 1,
"output": {
"content": [
{
"text": "302\n",
"type": "text"
}
]
},
"run_id": "cmuvylt7800ux0ivpp791zqiq",
"tool_id": "chatcmpl-tool-844e844e69e4868d",
"is_error": false,
"tool_kind": "shell"
}›Thinking…
The network is partially working. Please try fetching the pricing page.
curl -sL -m 15 https://www.back4app.com/pricing-back4app-plans | python3 -c " import sys, html, re t = sys.stdin.read() t = re.sub(r'<script.*?</script>|<style.*?</style>', '', t, flags=re.S) t = re.sub(r'<[^>]+>', ' ', t) t = html.unescape(re.sub(r'\s+', ' ', t)) print(t[:4000])"
Backend Hosting for Apps | Back4app Y our Application's Backend , Simplified Launch your backend in minutes with no infrastructure hassles. Our low-code platfo
Backend Hosting for Apps | Back4app Y our Application's Backend , Simplified Launch your backend in minutes with no infrastructure hassles. Our low-code platform, ready-to-use components, and AI-powered tools will help you build faster and scale without limits. Sign up with Google Sign up with Github Continue with email By clicking any "Sign Up" button, you agree to the Terms and acknowledge the Privacy Notice . Trusted by companies, loved by developers Everything you need to build a scalable product Databases Deploy scalable, production-ready MongoDB databases in a matter of seconds. Benefit from relational models, geo-queries, and real-time sync with no configuration required. ✓ Accessible through GraphQL, REST APIs, and SDKs. ✓ Spreadsheet-like user interface for intuitive data modeling. ✓ Flexible schema with Parse—evolve your data model without migrations. Products ID Category Price 3397fecdedb1 Electronics $299 2224gabjger4 Clothing $59 5689fdoerre2 Home $149 Electronics ID 3397 Stock 142 Rating 4.8 Hosted on MongoDB Atlas or DigitalOcean Managed Databases Auth Secure your apps with robust authentication, ACLs, and role-based access control . Support multiple login methods and enhance engagement with built-in messaging. Email Enter Email Create Password Your Password Sign up or sign up with Google APIs & SDKs Connect your frontend effortlessly with auto-generated APIs. Endpoints are automatically created for every database class, cloud function, or job deployed. GraphQL query { users { name, email } } REST GET /classes/Products SDK const query = new Parse.Query( "Product" ); Cloud Functions Add custom server-side logic with JavaScript functions . Seamlessly integrate with your database and authentication system. main.js Parse.Cloud .define( "sendEmail" , async (req) => { const user = req. params .user; await Mailgun. send ( { to : user.email, subject : "Welcome!" } ) } ); Web Deployment Deploy full-stack web apps directly from GitHub with a production-ready URL. Automatic CI/CD and infrastructure that scales. Select Repository Connect your GitHub account my-webapp ● Selected react-dashboard node-api Deploy my-webapp.b4a.app Real-time Supercharge your apps with live queries and instant data sync . Track database changes and user presence in real-time. Sarah Alex Mike Storage Store and deliver files at lightning speed using our integrated global CDN . Efficiently manage images, videos, and large assets. landscape.jpg Notifications Send push notifications for iOS and Android , plus email messages for verification and password reset. 9:41 Your App now New order #1234 Email 2m Welcome email sent Password 5m Reset link sent NEW AI Agent From idea to production in instants. Describe your app and let the AI Agent deliver scalable Web Apps with a full Back4app backend —provisioned automatically. AI Agent App deployed ✓ Build a SaaS dashboard with user auth Database schema created Auth configured Frontend + Backend deployed Your app is live! saas-dashboard.b4a.app MCP Turn Vibe Coding into viable apps. Build scalable applications directly from your favorite IDE, with full support for Cursor, VS Code, Windsurf, and Claude . Cursor — AI Chat B back4app connected Create a Parse app "my-saas" Ran create_parse_app Ran deploy_cloud_code ✓ App created and deployed! Cursor VS Code Windsurf Claude Security & Compliance HIPAA SOC 2 ISO 27001 GDPR Trusted by developers worldwide Join the community building the future of apps What Sets Us Apart? Open-Source Straightforward, easy-to-use, and low-learning curve Relational data, indexing, and aggregate functions Easy-to-understand and predictable pricing Dedicated and Enterprise plans Learn more Build Backends Fast - We Handle the Infrastructure Accelerate your development with our AI-powered tools and ready-to-use components for lightning-fast backend creation. With our intuitive UI, comprehensive SDKs, and powerful APIs, you can focus on growing your business while we handle the infrastructur
Recorded tool call
{
"type": "tool_call",
"seq": 10,
"ts": "2026-10-06T00:47:54.380Z",
"name": "bash",
"turn": 1,
"input": {
"command": "curl -sL -m 15 https://www.back4app.com/pricing-back4app-plans | python3 -c \"\nimport sys, html, re\nt = sys.stdin.read()\nt = re.sub(r'<script.*?</script>|<style.*?</style>', '', t, flags=re.S)\nt = re.sub(r'<[^>]+>', ' ', t)\nt = html.unescape(re.sub(r'\\s+', ' ', t))\nprint(t[:4000])\""
},
"run_id": "cmuvylt7800ux0ivpp791zqiq",
"tool_id": "chatcmpl-tool-991c9527b6483993",
"tool_kind": "shell"
}Recorded tool result
{
"type": "tool_result",
"seq": 12,
"ts": "2026-10-06T00:47:55.689Z",
"turn": 1,
"output": {
"content": [
{
"text": " Backend Hosting for Apps | Back4app Y our Application's Backend , Simplified Launch your backend in minutes with no infrastructure hassles. Our low-code platform, ready-to-use components, and AI-powered tools will help you build faster and scale without limits. Sign up with Google Sign up with Github Continue with email By clicking any \"Sign Up\" button, you agree to the Terms and acknowledge the Privacy Notice . Trusted by companies, loved by developers Everything you need to build a scalable product Databases Deploy scalable, production-ready MongoDB databases in a matter of seconds. Benefit from relational models, geo-queries, and real-time sync with no configuration required. ✓ Accessible through GraphQL, REST APIs, and SDKs. ✓ Spreadsheet-like user interface for intuitive data modeling. ✓ Flexible schema with Parse—evolve your data model without migrations. Products ID Category Price 3397fecdedb1 Electronics $299 2224gabjger4 Clothing $59 5689fdoerre2 Home $149 Electronics ID 3397 Stock 142 Rating 4.8 Hosted on MongoDB Atlas or DigitalOcean Managed Databases Auth Secure your apps with robust authentication, ACLs, and role-based access control . Support multiple login methods and enhance engagement with built-in messaging. Email Enter Email Create Password Your Password Sign up or sign up with Google APIs & SDKs Connect your frontend effortlessly with auto-generated APIs. Endpoints are automatically created for every database class, cloud function, or job deployed. GraphQL query { users { name, email } } REST GET /classes/Products SDK const query = new Parse.Query( \"Product\" ); Cloud Functions Add custom server-side logic with JavaScript functions . Seamlessly integrate with your database and authentication system. main.js Parse.Cloud .define( \"sendEmail\" , async (req) => { const user = req. params .user; await Mailgun. send ( { to : user.email, subject : \"Welcome!\" } ) } ); Web Deployment Deploy full-stack web apps directly from GitHub with a production-ready URL. Automatic CI/CD and infrastructure that scales. Select Repository Connect your GitHub account my-webapp ● Selected react-dashboard node-api Deploy my-webapp.b4a.app Real-time Supercharge your apps with live queries and instant data sync . Track database changes and user presence in real-time. Sarah Alex Mike Storage Store and deliver files at lightning speed using our integrated global CDN . Efficiently manage images, videos, and large assets. landscape.jpg Notifications Send push notifications for iOS and Android , plus email messages for verification and password reset. 9:41 Your App now New order #1234 Email 2m Welcome email sent Password 5m Reset link sent NEW AI Agent From idea to production in instants. Describe your app and let the AI Agent deliver scalable Web Apps with a full Back4app backend —provisioned automatically. AI Agent App deployed ✓ Build a SaaS dashboard with user auth Database schema created Auth configured Frontend + Backend deployed Your app is live! saas-dashboard.b4a.app MCP Turn Vibe Coding into viable apps. Build scalable applications directly from your favorite IDE, with full support for Cursor, VS Code, Windsurf, and Claude . Cursor — AI Chat B back4app connected Create a Parse app \"my-saas\" Ran create_parse_app Ran deploy_cloud_code ✓ App created and deployed! Cursor VS Code Windsurf Claude Security & Compliance HIPAA SOC 2 ISO 27001 GDPR Trusted by developers worldwide Join the community building the future of apps What Sets Us Apart? Open-Source Straightforward, easy-to-use, and low-learning curve Relational data, indexing, and aggregate functions Easy-to-understand and predictable pricing Dedicated and Enterprise plans Learn more Build Backends Fast - We Handle the Infrastructure Accelerate your development with our AI-powered tools and ready-to-use components for lightning-fast backend creation. With our intuitive UI, comprehensive SDKs, and powerful APIs, you can focus on growing your business while we handle the infrastructur\n",
"type": "text"
}
]
},
"run_id": "cmuvylt7800ux0ivpp791zqiq",
"tool_id": "chatcmpl-tool-991c9527b6483993",
"is_error": false,
"tool_kind": "shell"
}›Thinking…
Let's grab the actual pricing tiers. Fetching more of the page.
curl -sL -m 15 https://www.back4app.com/pricing-back4app-plans | python3 -c "
import sys, html, re
t = sys.stdin.read()
t = re.sub(r'<script.*?</script>|<style.*?</style>', '', t, flags=re.S)
t = re.sub(r'<[^>]+>', ' ', t)
t = html.unescape(re.sub(r'\s+', ' ', t))
i = t.find('You Build, We Host')
if i < 0: i = t.find('Free')
print(t[4000:10000])"e. A Developer-Centric Platform That Speaks Y our Language Back4app simplifies connecting your frontend to the backend, no matter what technology stack you're u
e. A Developer-Centric Platform That Speaks Y our Language Back4app simplifies connecting your frontend to the backend, no matter what technology stack you're using. Write less code, integrate faster, and focus on delivering exceptional apps. Saving data Javascript SDK GraphQL API REST API iOS SDK Android SDK Flutter SDK .NET SDK Querying data Creating Cloud Functions Extending GraphQL Schema Calling Cloud Functions Saving data Saving data Querying data Creating Cloud Functions Extending GraphQL Schema Calling Cloud Functions Javascript SDK GraphQL API REST API iOS SDK Android SDK Flutter SDK .NET SDK copy code 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 // Create Tatooine const Planet = Parse.Object. extend ( 'Planet' ); const tatooine = new Planet (); tatooine. set ( 'name' , 'Tatooine' ); tatooine. set ( 'population' , 200000 ); await tatooine. save (); // Create Luke Skywalker const Character = Parse.Object. extend ( 'Character' ); const lukeSkywalker = new Character (); lukeSkywalker. set ( 'name' , 'Luke Skywalker' ); lukeSkywalker. set ( 'birthYear' , "19BBY" ); lukeSkywalker. set ( 'homeworld' , tatooine); await lukeSkywalker. save (); Need more information about the functions? Check our Docs The Foundation for Building and Scaling Apps Whether you're developing your first app or scaling to millions of users, we're here to support you at every stage of your development journey. How scalable is Back4app? How secure is Back4app? Scale Security Flexibility Scale with confidence Keep costs under control as you scale your apps with simple, predictable pricing. Scaling is automatic, and we guide the process to ensure everything runs smoothly. Scale as high as you need Add new features as you grow Scale vertically or horizontally Discover What's Possible with Back4app Whether you're starting from scratch or scaling up, our starter kits and examples will guide you through every step of app development. ReactJS Slack Clone A ReactJS Slack clone template with real-time updates, relational queries, and authentication. View Code Flutter User Login/SignUp A Flutter starter kit for user sign-up and login to speed up your app development. View Code React Native Login/SignUp A React Native template for user sign-up and login using the Parse.User class. View Code View more on GitHub Join the Community Discover insights, share experiences, and elevate your application development with Back4app. Slack Discussion YouTube Channel Simplify Y our Backend, Amplify Y our Success Join developers worldwide who launch backends in minutes using Back4app's low-code platform. Build faster, scale without limits, and focus on delivering exceptional user experiences. Start building now!
Recorded tool call
{
"type": "tool_call",
"seq": 15,
"ts": "2026-10-06T00:47:58.026Z",
"name": "bash",
"turn": 1,
"input": {
"command": "curl -sL -m 15 https://www.back4app.com/pricing-back4app-plans | python3 -c \"\nimport sys, html, re\nt = sys.stdin.read()\nt = re.sub(r'<script.*?</script>|<style.*?</style>', '', t, flags=re.S)\nt = re.sub(r'<[^>]+>', ' ', t)\nt = html.unescape(re.sub(r'\\s+', ' ', t))\ni = t.find('You Build, We Host')\nif i < 0: i = t.find('Free')\nprint(t[4000:10000])\""
},
"run_id": "cmuvylt7800ux0ivpp791zqiq",
"tool_id": "chatcmpl-tool-b0b131987edfb67b",
"tool_kind": "shell"
}Recorded tool result
{
"type": "tool_result",
"seq": 17,
"ts": "2026-10-06T00:47:59.432Z",
"turn": 1,
"output": {
"content": [
{
"text": "e. A Developer-Centric Platform That Speaks Y our Language Back4app simplifies connecting your frontend to the backend, no matter what technology stack you're using. Write less code, integrate faster, and focus on delivering exceptional apps. Saving data Javascript SDK GraphQL API REST API iOS SDK Android SDK Flutter SDK .NET SDK Querying data Creating Cloud Functions Extending GraphQL Schema Calling Cloud Functions Saving data Saving data Querying data Creating Cloud Functions Extending GraphQL Schema Calling Cloud Functions Javascript SDK GraphQL API REST API iOS SDK Android SDK Flutter SDK .NET SDK copy code 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 // Create Tatooine const Planet = Parse.Object. extend ( 'Planet' ); const tatooine = new Planet (); tatooine. set ( 'name' , 'Tatooine' ); tatooine. set ( 'population' , 200000 ); await tatooine. save (); // Create Luke Skywalker const Character = Parse.Object. extend ( 'Character' ); const lukeSkywalker = new Character (); lukeSkywalker. set ( 'name' , 'Luke Skywalker' ); lukeSkywalker. set ( 'birthYear' , \"19BBY\" ); lukeSkywalker. set ( 'homeworld' , tatooine); await lukeSkywalker. save (); Need more information about the functions? Check our Docs The Foundation for Building and Scaling Apps Whether you're developing your first app or scaling to millions of users, we're here to support you at every stage of your development journey. How scalable is Back4app? How secure is Back4app? Scale Security Flexibility Scale with confidence Keep costs under control as you scale your apps with simple, predictable pricing. Scaling is automatic, and we guide the process to ensure everything runs smoothly. Scale as high as you need Add new features as you grow Scale vertically or horizontally Discover What's Possible with Back4app Whether you're starting from scratch or scaling up, our starter kits and examples will guide you through every step of app development. ReactJS Slack Clone A ReactJS Slack clone template with real-time updates, relational queries, and authentication. View Code Flutter User Login/SignUp A Flutter starter kit for user sign-up and login to speed up your app development. View Code React Native Login/SignUp A React Native template for user sign-up and login using the Parse.User class. View Code View more on GitHub Join the Community Discover insights, share experiences, and elevate your application development with Back4app. Slack Discussion YouTube Channel Simplify Y our Backend, Amplify Y our Success Join developers worldwide who launch backends in minutes using Back4app's low-code platform. Build faster, scale without limits, and focus on delivering exceptional user experiences. Start building now! \n",
"type": "text"
}
]
},
"run_id": "cmuvylt7800ux0ivpp791zqiq",
"tool_id": "chatcmpl-tool-b0b131987edfb67b",
"is_error": false,
"tool_kind": "shell"
}›Thinking…
The scraped page doesn't show the pricing tier figures (they're probably rendered dynamically). From what I know from memory: Back4App's pricing plans are — Free ($0): 25,000 requests/month, 250MB data storage, 1GB file storage, 1 user class... Basic ($25/month): 100,000 requests, 1GB... Let me try fetching their pricing API, or check a different URL. Should I try https://www.back4app.com/pricing or parseapi... Their plans are loaded from some endpoint. Quick attempt: fetch the page's HTML and look for JSON.
curl -sL -m 15 https://www.back4app.com/pricing-back4app-plans | grep -oE 'src="[^"]+\.js[^"]*"' | head; curl -sL -m 15 https://www.back4app.com/pricing-back4app-plans | grep -oiE '(\\\$|usd ?)[0-9]+' | sort | uniq -c | head -30
src="/_next/static/chunks/polyfills-c67a75d1b6f99dc8.js"
src="/_next/static/chunks/polyfills-c67a75d1b6f99dc8.js" src="/_next/static/chunks/22004.6b38da1774aa3ec8.js" src="/_next/static/chunks/webpack-7c55bef3ee31c6ab.js" src="/_next/static/chunks/framework-9550ba7d5e16004f.js" src="/_next/static/chunks/main-4865eda5f98afffc.js" src="/_next/static/chunks/pages/_app-9942f5cbea82901c.js" src="/_next/static/chunks/25675-706d27c75d2ee90f.js" src="/_next/static/chunks/65988-a5cc5671450d4ecd.js" src="/_next/static/chunks/58509-d9e7ff2015737ee7.js" src="/_next/static/chunks/92849-f61db910c2545540.js"
Recorded tool call
{
"type": "tool_call",
"seq": 20,
"ts": "2026-10-06T00:48:02.531Z",
"name": "bash",
"turn": 1,
"input": {
"command": "curl -sL -m 15 https://www.back4app.com/pricing-back4app-plans | grep -oE 'src=\"[^\"]+\\.js[^\"]*\"' | head; curl -sL -m 15 https://www.back4app.com/pricing-back4app-plans | grep -oiE '(\\\\\\$|usd ?)[0-9]+' | sort | uniq -c | head -30"
},
"run_id": "cmuvylt7800ux0ivpp791zqiq",
"tool_id": "chatcmpl-tool-a294b6f878b72b82",
"tool_kind": "shell"
}Recorded tool result
{
"type": "tool_result",
"seq": 22,
"ts": "2026-10-06T00:48:04.015Z",
"turn": 1,
"output": {
"content": [
{
"text": "src=\"/_next/static/chunks/polyfills-c67a75d1b6f99dc8.js\"\nsrc=\"/_next/static/chunks/22004.6b38da1774aa3ec8.js\"\nsrc=\"/_next/static/chunks/webpack-7c55bef3ee31c6ab.js\"\nsrc=\"/_next/static/chunks/framework-9550ba7d5e16004f.js\"\nsrc=\"/_next/static/chunks/main-4865eda5f98afffc.js\"\nsrc=\"/_next/static/chunks/pages/_app-9942f5cbea82901c.js\"\nsrc=\"/_next/static/chunks/25675-706d27c75d2ee90f.js\"\nsrc=\"/_next/static/chunks/65988-a5cc5671450d4ecd.js\"\nsrc=\"/_next/static/chunks/58509-d9e7ff2015737ee7.js\"\nsrc=\"/_next/static/chunks/92849-f61db910c2545540.js\"\n",
"type": "text"
}
]
},
"run_id": "cmuvylt7800ux0ivpp791zqiq",
"tool_id": "chatcmpl-tool-a294b6f878b72b82",
"is_error": false,
"tool_kind": "shell"
}›Thinking…
Pricing data is probably loaded from a Parse API (their own dashboard backend). Let me look for a NEXT_DATA JSON that might contain pricing info within the page, or search the HTML for the "Basic" plan or pricing figures.
curl -sL -m 15 https://www.back4app.com/pricing-back4app-plans > /tmp/b4a.html; grep -o '__NEXT_DATA__' /tmp/b4a.html | head -1; python3 - <<'EOF'
import re
h = open('/tmp/b4a.html').read()
m = re.search(r'<script id="__NEXT_DATA__" type="application/json">(.*?)</script>', h, re.S)
if m:
import json
d = json.loads(m.group(1))
s = json.dumps(d)
# find plan-ish keys
for kw in ['price','Price','plan','Plan','free','Free','usd','monthly']:
idxs=[mm.start() for mm in re.finditer(kw,s)][:3]
for i in idxs:
print(kw, s[max(0,i-80):i+120].replace('\n',' '))
print('---')
EOF__NEXT_DATA__
__NEXT_DATA__ --- --- --- --- --- --- --- ---
Recorded tool call
{
"type": "tool_call",
"seq": 25,
"ts": "2026-10-06T00:48:06.783Z",
"name": "bash",
"turn": 1,
"input": {
"command": "curl -sL -m 15 https://www.back4app.com/pricing-back4app-plans > /tmp/b4a.html; grep -o '__NEXT_DATA__' /tmp/b4a.html | head -1; python3 - <<'EOF'\nimport re\nh = open('/tmp/b4a.html').read()\nm = re.search(r'<script id=\"__NEXT_DATA__\" type=\"application/json\">(.*?)</script>', h, re.S)\nif m:\n import json\n d = json.loads(m.group(1))\n s = json.dumps(d)\n # find plan-ish keys\n for kw in ['price','Price','plan','Plan','free','Free','usd','monthly']:\n idxs=[mm.start() for mm in re.finditer(kw,s)][:3]\n for i in idxs:\n print(kw, s[max(0,i-80):i+120].replace('\\n',' '))\n print('---')\nEOF"
},
"run_id": "cmuvylt7800ux0ivpp791zqiq",
"tool_id": "chatcmpl-tool-bb0cbf341bce6acf",
"tool_kind": "shell"
}Recorded tool result
{
"type": "tool_result",
"seq": 27,
"ts": "2026-10-06T00:48:08.117Z",
"turn": 1,
"output": {
"content": [
{
"text": "__NEXT_DATA__\n---\n---\n---\n---\n---\n---\n---\n---\n",
"type": "text"
}
]
},
"run_id": "cmuvylt7800ux0ivpp791zqiq",
"tool_id": "chatcmpl-tool-bb0cbf341bce6acf",
"is_error": false,
"tool_kind": "shell"
}›Thinking…
The plans are loaded client-side. Not worth digging further — I'll state the pricing from known public info with a caveat that it should be verified. Let me quickly check their docs for pricing: docs.back4app.com might have a pricing page. Try https://www.back4app.com/docs/back4app/pricing/plans or something similar. One quick attempt.
for u in "https://www.back4app.com/docs/back4app/pricing/plans" "https://www.back4app.com/pricing"; do echo "== $u"; curl -sL -m 12 "$u" | python3 -c "
import sys,html,re
t=sys.stdin.read()
t=re.sub(r'<script.*?</script>|<style.*?</style>','',t,flags=re.S)
t=re.sub(r'<[^>]+>',' ',t); t=html.unescape(re.sub(r'\s+',' ',t))
import re as r
hits=r.findall(r'.{60}\\\$\s?\d+.{80}', t)
for h in hits[:12]: print(h)
print('LEN', len(t))"; done== https://www.back4app.com/docs/back4app/pricing/plans
== https://www.back4app.com/docs/back4app/pricing/plans LEN 116 == https://www.back4app.com/pricing LEN 788
Recorded tool call
{
"type": "tool_call",
"seq": 30,
"ts": "2026-10-06T00:48:09.914Z",
"name": "bash",
"turn": 1,
"input": {
"command": "for u in \"https://www.back4app.com/docs/back4app/pricing/plans\" \"https://www.back4app.com/pricing\"; do echo \"== $u\"; curl -sL -m 12 \"$u\" | python3 -c \"\nimport sys,html,re\nt=sys.stdin.read()\nt=re.sub(r'<script.*?</script>|<style.*?</style>','',t,flags=re.S)\nt=re.sub(r'<[^>]+>',' ',t); t=html.unescape(re.sub(r'\\s+',' ',t))\nimport re as r\nhits=r.findall(r'.{60}\\\\\\$\\s?\\d+.{80}', t)\nfor h in hits[:12]: print(h)\nprint('LEN', len(t))\"; done"
},
"run_id": "cmuvylt7800ux0ivpp791zqiq",
"tool_id": "chatcmpl-tool-8656dde4a184f4ae",
"tool_kind": "shell"
}Recorded tool result
{
"type": "tool_result",
"seq": 31,
"ts": "2026-10-06T00:48:11.244Z",
"turn": 1,
"output": {
"content": [
{
"text": "== https://www.back4app.com/docs/back4app/pricing/plans\nLEN 116\n== https://www.back4app.com/pricing\nLEN 788\n",
"type": "text"
}
]
},
"run_id": "cmuvylt7800ux0ivpp791zqiq",
"tool_id": "chatcmpl-tool-8656dde4a184f4ae",
"is_error": false,
"tool_kind": "shell"
}›Thinking…
Not productive. I'll rely on publicly available knowledge, and clearly note "verify on the pricing page." Known Back4App pricing plans (as of recently): Free $0 — 25K requests/month, 250MB DB, 1GB files, 5GB transfer; Basic $25/month — 100K requests, 1GB DB, 5GB files; Professional $100/month — 1M requests, 4GB DB; Business $250/month — 3M requests; plus Dedicated/Enterprise. Also, container hosting is separate. I'll present it as "approximately, verify the latest."
Next, building the example. Back4App has an actual developer workflow: Parse SDK/REST API. However, creating an app requires account registration via the web dashboard (or their MCP/AI agent, but that still requires credentials). Therefore: without the user's Application ID / REST key / JS key, it's impossible to provision a live app. I should build a sample that runs immediately once credentials are provided, and if possible, verify the REST endpoint pattern against parseapi.back4app.com (it'll probably return a 401 without credentials, but I can demonstrate connectivity).
Let's build a small Node.js sample: use a plain REST API (no dependencies — lighter than installing the parse npm package, though npm install parse is fast and non-blocking). Actually, "keep it light: use the hosted product via SDK or API" — npm install parse is fine and fast. But a zero-dependency REST sample is even lighter and runs anywhere. I'll write a single Node script that uses fetch against https://parseapi.back4app.com to do the following:
- Create a Product object
- Query it
- Update, delete
- Optionally demo user signup/login
Credentials via environment variables: BACK4APP_APP_ID, BACK4APP_JS_KEY, BACK4APP_REST_KEY, optionally MASTER_KEY (for schema creation).
Then test connectivity: without credentials, calls to parseapi.back4app.com return 401/invalid key — I can show that the endpoint is reachable.
Let's write the file and run a quick reachability check.
The network connection is working normally, and Back4App is reachable. Building a lightweight sample right now — a zero-dependency Node script that communicates with Back4App's hosted Parse REST API (same one their SDK wraps), plus optionally also an SDK variant.
File edits
1 file
Writtenback4app-demo/todo-rest.mjsView changes
/sandbox/repo/back4app-demo/todo-rest.mjs
Written content · previous contents were not recorded
#!/usr/bin/env node/*** Back4App quickstart — zero-dependency Node example using the hosted Parse REST API.** 1. Create a free app at https://dashboard.back4app.com* 2. Go to: App Settings -> Security & Keys* 3. Export your keys and run:* export BACK4APP_APP_ID="..." # Application ID* export BACK4APP_JS_KEY="..." # JavaScript Key* export BACK4APP_REST_KEY="..." # REST API Key* node todo-rest.mjs*/const APP_ID = process.env.BACK4APP_APP_ID;const JS_KEY = process.env.BACK4APP_JS_KEY;const REST_KEY = process.env.BACK4APP_REST_KEY;const SERVER = "https://parseapi.back4app.com"; // Back4App's hosted Parse endpointif (!APP_ID || !JS_KEY || !REST_KEY) {console.error("Missing credentials. Set BACK4APP_APP_ID, BACK4APP_JS_KEY, BACK4APP_REST_KEY.");console.error("Get them from dashboard.back4app.com -> your app -> App Settings -> Security & Keys");process.exit(1);}const headers = {"X-Parse-Application-Id": APP_ID,"X-Parse-REST-API-Key": REST_KEY,"Content-Type": "application/json",};async function call(method, path, body) {const res = await fetch(`${SERVER}${path}`, {method,headers,body: body ? JSON.stringify(body) : undefined,});const json = await res.json().catch(() => ({}));if (!res.ok) throw new Error(`${method} ${path} -> ${res.status}: ${JSON.stringify(json)}`);return json;}// --- 1. Create an object (class "Todo" is created automatically on first save) ---const created = await call("POST", "/classes/Todo", {title: "Try Back4App",done: false,});console.log("Created Todo:", created); // { objectId, createdAt }// --- 2. Query objects ---const q = await call("GET",`/classes/Todo?where=${encodeURIComponent(JSON.stringify({ done: false }))}`);console.log(`Open todos (${q.results.length}):`, q.results.map((t) => t.title));// --- 3. Update an object ---const updated = await call("PUT", `/classes/Todo/${created.objectId}`, { done: true });console.log("Updated:", updated); // { updatedAt }// --- 4. Signup a user (built-in auth) ---const username = `demo_${Date.now()}`;const user = await call("POST", "/users", { username, password: "demo-pass-123" });console.log("Signed up user:", user.objectId, "session:", user.sessionToken.slice(0, 12) + "...");// --- 5. Delete the todo ---const del = await call("DELETE", `/classes/Todo/${created.objectId}`);console.log("Deleted todo:", del); // {}console.log("\nDone — full CRUD + auth against Back4App hosted backend.");
Source: write · chatcmpl-tool-b2f7a9991bf87c67
Recorded tool call
{
"type": "tool_call",
"seq": 34,
"ts": "2026-10-06T00:48:25.712Z",
"name": "write",
"turn": 1,
"input": {
"path": "/sandbox/repo/back4app-demo/todo-rest.mjs",
"content": "#!/usr/bin/env node\n/**\n * Back4App quickstart — zero-dependency Node example using the hosted Parse REST API.\n *\n * 1. Create a free app at https://dashboard.back4app.com\n * 2. Go to: App Settings -> Security & Keys\n * 3. Export your keys and run:\n * export BACK4APP_APP_ID=\"...\" # Application ID\n * export BACK4APP_JS_KEY=\"...\" # JavaScript Key\n * export BACK4APP_REST_KEY=\"...\" # REST API Key\n * node todo-rest.mjs\n */\n\nconst APP_ID = process.env.BACK4APP_APP_ID;\nconst JS_KEY = process.env.BACK4APP_JS_KEY;\nconst REST_KEY = process.env.BACK4APP_REST_KEY;\nconst SERVER = \"https://parseapi.back4app.com\"; // Back4App's hosted Parse endpoint\n\nif (!APP_ID || !JS_KEY || !REST_KEY) {\n console.error(\"Missing credentials. Set BACK4APP_APP_ID, BACK4APP_JS_KEY, BACK4APP_REST_KEY.\");\n console.error(\"Get them from dashboard.back4app.com -> your app -> App Settings -> Security & Keys\");\n process.exit(1);\n}\n\nconst headers = {\n \"X-Parse-Application-Id\": APP_ID,\n \"X-Parse-REST-API-Key\": REST_KEY,\n \"Content-Type\": \"application/json\",\n};\n\nasync function call(method, path, body) {\n const res = await fetch(`${SERVER}${path}`, {\n method,\n headers,\n body: body ? JSON.stringify(body) : undefined,\n });\n const json = await res.json().catch(() => ({}));\n if (!res.ok) throw new Error(`${method} ${path} -> ${res.status}: ${JSON.stringify(json)}`);\n return json;\n}\n\n// --- 1. Create an object (class \"Todo\" is created automatically on first save) ---\nconst created = await call(\"POST\", \"/classes/Todo\", {\n title: \"Try Back4App\",\n done: false,\n});\nconsole.log(\"Created Todo:\", created); // { objectId, createdAt }\n\n// --- 2. Query objects ---\nconst q = await call(\n \"GET\",\n `/classes/Todo?where=${encodeURIComponent(JSON.stringify({ done: false }))}`\n);\nconsole.log(`Open todos (${q.results.length}):`, q.results.map((t) => t.title));\n\n// --- 3. Update an object ---\nconst updated = await call(\"PUT\", `/classes/Todo/${created.objectId}`, { done: true });\nconsole.log(\"Updated:\", updated); // { updatedAt }\n\n// --- 4. Signup a user (built-in auth) ---\nconst username = `demo_${Date.now()}`;\nconst user = await call(\"POST\", \"/users\", { username, password: \"demo-pass-123\" });\nconsole.log(\"Signed up user:\", user.objectId, \"session:\", user.sessionToken.slice(0, 12) + \"...\");\n\n// --- 5. Delete the todo ---\nconst del = await call(\"DELETE\", `/classes/Todo/${created.objectId}`);\nconsole.log(\"Deleted todo:\", del); // {}\n\nconsole.log(\"\\nDone — full CRUD + auth against Back4App hosted backend.\");\n"
},
"run_id": "cmuvylt7800ux0ivpp791zqiq",
"tool_id": "chatcmpl-tool-b2f7a9991bf87c67",
"tool_kind": "file_edit"
}Recorded tool result
{
"type": "tool_result",
"seq": 36,
"ts": "2026-10-06T00:48:25.712Z",
"turn": 1,
"output": {
"content": [
{
"text": "Successfully wrote 2540 bytes to /sandbox/repo/back4app-demo/todo-rest.mjs",
"type": "text"
}
]
},
"run_id": "cmuvylt7800ux0ivpp791zqiq",
"tool_id": "chatcmpl-tool-b2f7a9991bf87c67",
"is_error": false,
"tool_kind": "file_edit"
}File edits
1 file
Writtenback4app-demo/todo-sdk.mjsView changes
/sandbox/repo/back4app-demo/todo-sdk.mjs
Written content · previous contents were not recorded
/*** Same demo using the official Parse JS SDK (what Back4App recommends for apps).* npm install parse* export BACK4APP_APP_ID="..." BACK4APP_JS_KEY="..."* node todo-sdk.mjs*/import Parse from "parse/node";Parse.initialize(process.env.BACK4APP_APP_ID, process.env.BACK4APP_JS_KEY);Parse.serverURL = "https://parseapi.back4app.com";const Todo = Parse.Object.extend("Todo");const todo = new Todo();todo.set("title", "Try Back4App via SDK");todo.set("done", false);await todo.save();console.log("Saved:", todo.id);const query = new Parse.Query(Todo);query.equalTo("done", false);const results = await query.find();console.log("Open todos:", results.map((t) => t.get("title")));todo.set("done", true);await todo.save();console.log("Marked done.");await todo.destroy();console.log("Deleted.");
Source: write · chatcmpl-tool-841f5367a99c2bf0
Recorded tool call
{
"type": "tool_call",
"seq": 35,
"ts": "2026-10-06T00:48:25.712Z",
"name": "write",
"turn": 1,
"input": {
"path": "/sandbox/repo/back4app-demo/todo-sdk.mjs",
"content": "/**\n * Same demo using the official Parse JS SDK (what Back4App recommends for apps).\n * npm install parse\n * export BACK4APP_APP_ID=\"...\" BACK4APP_JS_KEY=\"...\"\n * node todo-sdk.mjs\n */\nimport Parse from \"parse/node\";\n\nParse.initialize(process.env.BACK4APP_APP_ID, process.env.BACK4APP_JS_KEY);\nParse.serverURL = \"https://parseapi.back4app.com\";\n\nconst Todo = Parse.Object.extend(\"Todo\");\n\nconst todo = new Todo();\ntodo.set(\"title\", \"Try Back4App via SDK\");\ntodo.set(\"done\", false);\nawait todo.save();\nconsole.log(\"Saved:\", todo.id);\n\nconst query = new Parse.Query(Todo);\nquery.equalTo(\"done\", false);\nconst results = await query.find();\nconsole.log(\"Open todos:\", results.map((t) => t.get(\"title\")));\n\ntodo.set(\"done\", true);\nawait todo.save();\nconsole.log(\"Marked done.\");\n\nawait todo.destroy();\nconsole.log(\"Deleted.\");\n"
},
"run_id": "cmuvylt7800ux0ivpp791zqiq",
"tool_id": "chatcmpl-tool-841f5367a99c2bf0",
"tool_kind": "file_edit"
}Recorded tool result
{
"type": "tool_result",
"seq": 37,
"ts": "2026-10-06T00:48:25.712Z",
"turn": 1,
"output": {
"content": [
{
"text": "Successfully wrote 829 bytes to /sandbox/repo/back4app-demo/todo-sdk.mjs",
"type": "text"
}
]
},
"run_id": "cmuvylt7800ux0ivpp791zqiq",
"tool_id": "chatcmpl-tool-841f5367a99c2bf0",
"is_error": false,
"tool_kind": "file_edit"
}›Thinking…
Confirm that the script's syntax can be parsed, and check the endpoint's reachability (without credentials, a 401-series error is expected, which will prove connectivity).
cd /sandbox/repo/back4app-demo && node --check todo-rest.mjs && node --check todo-sdk.mjs && echo "syntax OK"; node todo-rest.mjs; echo "exit=$?"
syntax OK
syntax OK Missing credentials. Set BACK4APP_APP_ID, BACK4APP_JS_KEY, BACK4APP_REST_KEY. Get them from dashboard.back4app.com -> your app -> App Settings -> Security & Keys exit=1
Recorded tool call
{
"type": "tool_call",
"seq": 40,
"ts": "2026-10-06T00:48:27.814Z",
"name": "bash",
"turn": 1,
"input": {
"command": "cd /sandbox/repo/back4app-demo && node --check todo-rest.mjs && node --check todo-sdk.mjs && echo \"syntax OK\"; node todo-rest.mjs; echo \"exit=$?\""
},
"run_id": "cmuvylt7800ux0ivpp791zqiq",
"tool_id": "chatcmpl-tool-be5134f3faa0e8bc",
"tool_kind": "shell"
}Recorded tool result
{
"type": "tool_result",
"seq": 43,
"ts": "2026-10-06T00:48:28.127Z",
"turn": 1,
"output": {
"content": [
{
"text": "syntax OK\nMissing credentials. Set BACK4APP_APP_ID, BACK4APP_JS_KEY, BACK4APP_REST_KEY.\nGet them from dashboard.back4app.com -> your app -> App Settings -> Security & Keys\nexit=1\n",
"type": "text"
}
]
},
"run_id": "cmuvylt7800ux0ivpp791zqiq",
"tool_id": "chatcmpl-tool-be5134f3faa0e8bc",
"is_error": false,
"tool_kind": "shell"
}curl -s -m 10 -X POST https://parseapi.back4app.com/classes/Todo -H 'Content-Type: application/json' -H 'X-Parse-Application-Id: fake-app-id-for-connectivity-test' -d '{}' -w "\nHTTP %{http_code}\n"{"error":"unauthorized"}
{"error":"unauthorized"}
HTTP 401
Recorded tool call
{
"type": "tool_call",
"seq": 41,
"ts": "2026-10-06T00:48:27.814Z",
"name": "bash",
"turn": 1,
"input": {
"command": "curl -s -m 10 -X POST https://parseapi.back4app.com/classes/Todo -H 'Content-Type: application/json' -H 'X-Parse-Application-Id: fake-app-id-for-connectivity-test' -d '{}' -w \"\\nHTTP %{http_code}\\n\""
},
"run_id": "cmuvylt7800ux0ivpp791zqiq",
"tool_id": "chatcmpl-tool-b729e026b9e67169",
"tool_kind": "shell"
}Recorded tool result
{
"type": "tool_result",
"seq": 44,
"ts": "2026-10-06T00:48:28.127Z",
"turn": 1,
"output": {
"content": [
{
"text": "{\"error\":\"unauthorized\"}\nHTTP 401\n",
"type": "text"
}
]
},
"run_id": "cmuvylt7800ux0ivpp791zqiq",
"tool_id": "chatcmpl-tool-b729e026b9e67169",
"is_error": false,
"tool_kind": "shell"
}›Thinking…
Everything works as expected. The endpoint is reachable, and without an actual app key it correctly returns 401. Can't create a Back4App app without registering an account (web dashboard, email verification) — that's the blocker. Let me summarize.
Done. Here's the summary:
What I built
/sandbox/repo/back4app-demo/:
todo-rest.mjs— zero-dependency Node script hitting Back4App's hosted Parse REST API (https://parseapi.back4app.com): creates aTodoobject, queries it, updates it, signs up a user, and deletes the object. Full CRUD + auth demo.todo-sdk.mjs— the same flow using the official Parse JS SDK (the idiomatic path for real apps;npm install parse).
Both scripts pass syntax checks, and I verified the hosted API endpoint is reachable from here (it correctly returns 401 unauthorized with a fake app ID).
⚠️ One blocker — plainly stated
Back4App does have a real developer workflow (SDK/API, no local stack needed — nothing long-running to run). But it requires account signup + creating an app in their web dashboard to get an Application ID / REST key / JS key. I can't sign up (email/Google/GitHub registration), so I can't execute the demo against a live app. Once you create a free app at dashboard.back4app.com and export the three env vars, node todo-rest.mjs runs end-to-end — the scripts tell you exactly which keys to grab (App Settings → Security & Keys).
Pricing
Plans are request-quota based, roughly (verify on back4app.com/pricing — the tiers load client-side so I couldn't scrape live numbers):
- Free: ~25K requests/mo, 250MB database, 1GB file storage — fine for demos/prototypes
- Basic: ~$25/mo — ~100K requests/mo, 1GB database
- Professional/Business: ~$100–$250/mo — scaling requests/storage
- Dedicated/Enterprise: custom pricing, dedicated MongoDB instances
Pricing is predictable (flat tiers, metered by API requests + storage), not usage-ambiguous.
Will it be easy for me to manage?
Yes, once credentials exist. Everything after app creation is scriptable: REST API and SDKs cover CRUD, schemas, cloud functions, and users, so I can build, deploy cloud code, and automate data ops without touching the dashboard. The only un-automatable parts are the initial signup and key retrieval (and billing). No local service stacks, no daemons — it's purely a hosted API, which suits agent-driven workflows well.
AX Fundamentals
23 checks. Open an area for details.
This check is a quick preview. Test more tasks and models with Gauge Agents.
Test your product with Gauge Agents