---
title: "Recommend Stack"
method: POST
path: "/api/v1/recommend"
tags: ["recommend"]
---

# Recommend Stack

`POST /api/v1/recommend`

## Request

- Base URL: `https://scrapeselect.com` (the document declares no server; this is the origin it was published from)
- URL: `https://scrapeselect.com/api/v1/recommend`
- Auth: none declared

## Request body

- RecommendRequestInput
  - `workload` WorkloadInput, required: Monthly scraping workload. Unset optional fields fall back to visible assumptions.
    - `successful_pages_per_month` integer, required
    - `javascript_ratio` union
      - number
      - string
    - `anti_bot_level` 'low' | 'medium' | 'high' | 'unknown'
    - `target_country` string, nullable
    - `country_required` boolean
    - `domain_class` string, nullable: Target category with special pricing, e.g. 'amazon'.
    - `peak_concurrency` integer
    - `monthly_billing_only` boolean
    - `expected_success_rate` union
      - number
      - string
    - `average_page_size_kb` union
      - number
      - string
    - `average_browser_seconds` union
      - number
      - string
  - `budget_usd` union
    - number
    - string
  - `requires_login_session` boolean
  - `team_maintenance_capability` 'low' | 'medium' | 'high'

## Response `200`

Successful Response

- RecommendResponse
  - `status` 'recommendation_available' | 'requirements_not_feasible', required
  - `recommended_architecture` 'managed_scraping_api' | 'scraping_api_plus_fallback' | 'self_hosted', required
  - `confidence` 'high' | 'medium' | 'low', required
  - `requirements` RecommendRequestOutput, required
    - `workload` WorkloadOutput, required: Monthly scraping workload. Unset optional fields fall back to visible assumptions.
      - `successful_pages_per_month` integer, required
      - `javascript_ratio` string
      - `anti_bot_level` 'low' | 'medium' | 'high' | 'unknown'
      - `target_country` string, nullable
      - `country_required` boolean
      - `domain_class` string, nullable: Target category with special pricing, e.g. 'amazon'.
      - `peak_concurrency` integer
      - `monthly_billing_only` boolean
      - `expected_success_rate` string, nullable
      - `average_page_size_kb` string, nullable
      - `average_browser_seconds` string, nullable
    - `budget_usd` string, nullable
    - `requires_login_session` boolean
    - `team_maintenance_capability` 'low' | 'medium' | 'high'
  - `assumptions` AssumptionOut[], required
    - `key` string, required
    - `label` string, required
    - `value` string, required
    - `origin` 'user' | 'default' | 'editorial' | 'public_observation', required
    - `note` string, nullable, required
  - `providers` CandidateOut[], required
    - `provider` string, required
    - `provider_name` string, required
    - `product` string, required
    - `product_name` string, required
    - `architecture` 'managed_api' | 'self_managed', required
    - `plan` PlanRef, required
      - `key` string, required
      - `name` string, required
    - `fit_score` integer, required
    - `score_breakdown` ScoreLineOut[], required
      - `key` string, required
      - `label` string, required
      - `points` integer, required
      - `max_points` integer, required
      - `why` string, required
    - `estimated_monthly_cost` CostRangeOut, required
      - `low` number, required
      - `expected` number, required
      - `high` number, required
      - `currency` 'USD'
    - `cost_per_1k_pages_usd` number, required
    - `reasons` NoteOut[], required
      - `text` string, required
      - `source` string, nullable, required
    - `limitations` NoteOut[], required
      - `text` string, required
      - `source` string, nullable, required
    - `evidence` SourceOut[], required
      - `key` string, required
      - `url` string, required
      - `title` string, required
      - `observed_at` string, date-time, required
      - `excerpts` string[], required
      - `fact_type` string, required
      - `freshness` 'fresh' | 'recent' | 'stale', required
    - `checked_at` string, required
  - `alternatives` CandidateOut[], required
    - `provider` string, required
    - `provider_name` string, required
    - `product` string, required
    - `product_name` string, required
    - `architecture` 'managed_api' | 'self_managed', required
    - `plan` PlanRef, required
      - `key` string, required
      - `name` string, required
    - `fit_score` integer, required
    - `score_breakdown` ScoreLineOut[], required
      - `key` string, required
      - `label` string, required
      - `points` integer, required
      - `max_points` integer, required
      - `why` string, required
    - `estimated_monthly_cost` CostRangeOut, required
      - `low` number, required
      - `expected` number, required
      - `high` number, required
      - `currency` 'USD'
    - `cost_per_1k_pages_usd` number, required
    - `reasons` NoteOut[], required
      - `text` string, required
      - `source` string, nullable, required
    - `limitations` NoteOut[], required
      - `text` string, required
      - `source` string, nullable, required
    - `evidence` SourceOut[], required
      - `key` string, required
      - `url` string, required
      - `title` string, required
      - `observed_at` string, date-time, required
      - `excerpts` string[], required
      - `fact_type` string, required
      - `freshness` 'fresh' | 'recent' | 'stale', required
    - `checked_at` string, required
  - `excluded` ExcludedOut[], required
    - `provider` string, required
    - `provider_name` string, required
    - `product` string, required
    - `product_name` string, required
    - `reasons` string[], required
  - `minimum_expected_budget_usd` number, nullable, required
  - `suggestions` string[], required
  - `run_id` string, uuid, required
  - `engine_version` string, required
  - `recommender_version` string, required
  - `meta` Meta, required
    - `data_checked_at` string, date-time, nullable, required
    - `freshness` 'fresh' | 'recent' | 'stale', required
    - `schema_version` string, required

## Other responses

- `422`: Validation Error

---

[API](https://skmtc.dev/scrapeselect/apis/scrapeselect-api.md) · [All operations](https://skmtc.dev/scrapeselect/apis/scrapeselect-api/llms.txt) · [OpenAPI document](https://skmtc.dev/scrapeselect/apis/scrapeselect-api/revisions/894562f38be1?raw)
