Skip to main content

General

Mino is an AI-powered web automation API that lets you automate any website using natural language. Instead of writing brittle selectors, you describe what you want to do, and our AI handles the rest.
Any publicly accessible website. For authenticated sites, include login steps in your goal. For sites with bot protection, use stealth mode.
Typically 3-10 seconds for simple pages, 30-60 seconds for complex multi-step automations. Time depends on page load speed and task complexity.
Yes! Every run provides a streamingUrl where you can watch the browser execute live for 24 hours after completion.

API Usage

The REST API uses the X-API-Key header:
X-API-Key: $MINO_API_KEY
The MCP endpoint uses OAuth 2.1 for AI assistant integrations.
Yes, configure proxy routing:
{
  proxy_config: {
    enabled: true,
    country_code: "US"
  }
}
Supported countries: US, GB, CA, DE, FR, JP, AU.

Technical

We use Chromium-based browsers. Choose between:
  • Lite: Standard Chromium (fast)
  • Stealth: Modified Chromium with anti-detection (slower but bypasses bot protection)
We fully support SPAs (React, Vue, Angular). Pages are rendered and JavaScript is executed before extraction.
Yes, include login steps in your goal:
goal: `
  1. Login with username "user@example.com" and password "pass123"
  2. Navigate to dashboard
  3. Extract account balance
`
Yes, describe pagination in your goal:
goal: `Click "Next Page" button 5 times, extracting products from each page`

Troubleshooting

status: "COMPLETED" means the infrastructure succeeded - the browser launched, navigated, and the automation finished without crashing.It does NOT mean the goal was achieved. You must check the result field to determine if the goal succeeded.Scenario 1: Goal achieved
{
  "status": "COMPLETED",
  "result": {
    "products": [
      { "name": "iPhone 15", "price": "$799" }
    ]
  },
  "error": null
}
The result contains the extracted data - goal succeeded.Scenario 2: Infrastructure succeeded, goal failed
{
  "status": "COMPLETED",
  "result": {
    "status": "failure",
    "reason": "Could not find any products on the page",
    "product_price": null
  },
  "error": null
}
Status is COMPLETED (browser worked), but result.status is “failure” indicating the goal wasn’t achieved.Scenario 3: Infrastructure failed
{
  "status": "FAILED",
  "result": null,
  "error": {
    "message": "Browser crashed during execution"
  }
}
The automation couldn’t complete due to infrastructure issues.Best Practice: Always validate result content, not just status:
if (run.status === "COMPLETED" && run.result) {
  // Check if result indicates goal failure
  if (run.result.status === "failure" || run.result.error) {
    console.log("Goal not achieved:", run.result.reason || run.result.error);
  } else {
    console.log("Data extracted:", run.result);
  }
} else if (run.status === "FAILED") {
  console.log("Automation failed:", run.error?.message);
}
Common causes:
  1. Timeout - Site is slow or down
    • Solution: Retry or use stealth mode
  2. Access Denied - Anti-bot protection
    • Solution: Use stealth mode + proxy
  3. Element Not Found - Goal is too specific
    • Solution: Make goal more flexible (describe visually)
  4. Invalid URL - URL is malformed
    • Solution: Ensure URL includes https://
// Use stealth mode
browser_profile: "stealth"

// Add proxy
proxy_config: {
  enabled: true,
  country_code: "US"
}

// Reduce speed (add delays in goal)
goal: "Wait 3 seconds, then click button"

Best Practices

Good (specific, actionable):
goal: "Extract product name, price, and stock status from the product details section"
Bad (vague):
goal: "Get data"
Use stealth when:
  • Site shows CAPTCHA
  • Getting “Access Denied” errors
  • Site uses Cloudflare or anti-bot protection
Otherwise use lite mode (faster).

Getting Help