Use compare when an agent needs a structured two-product evaluation instead of stitching together multiple product reads manually.
Input model
Pass exactly two slugs through the slugs query parameter.
Output model
The response returns both product detail objects plus a comparison block covering:
- shared and unique tools
- shared audience tags
- agent use case alignment
- qualification and claim-review deltas
- trust-oriented summary fields
GET
/api/v1/compareUse this endpoint when an agent needs shared tools, trust-state differences, and audience/use-case overlap without scraping two product pages.
Auth
No API keys. No account auth. Public JSON endpoints only.
Review model
Read-only endpoint over approved listings.
Cache
Dynamic server response.
Example request
curl "https://www.madewithstack.com/api/v1/compare?slugs=devin,lindy"
Query parameters
| Field | Type | Required | Description |
|---|---|---|---|
slugs | comma-separated product slugs | Yes | Exactly two approved product slugs, for example devin,lindy. |
Responses
200
Success
Returns both approved product detail objects plus a structured comparison summary.
{
"slugs": [
"devin",
"lindy"
],
"products": [
{
"id": "string",
"name": "string",
"slug": "string",
"description": "string",
"url": "string",
"favicon_url": "string | null",
"founder_name": "string | null",
"founder_twitter": "string | null",
"founder_profile_slug": "string | null",
"launch_date": "string | null",
"status": "\"approved\"",
"created_at": "string",
"approved_at": "string | null",
"view_count": "number",
"is_featured": "boolean",
"featured_rank": "number",
"screenshot_url": "string | null",
"submission_tier": "\"free\" | \"paid_fast_track\"",
"review_priority": "number",
"audience_tags": [
"\"for-developers\" | \"for-founders\" | \"b2b\" | \"consumer\""
],
"badge_verified": "boolean",
"is_agent_product": "boolean",
"qualification_type": "\"agent_native\" | \"agent_built\" | \"agentic_workflow\" | null",
"agent_use_case": "\"support\" | \"research\" | \"operations\" | \"sales\" | \"voice\" | \"browser_automation\" | null",
"qualification_statement": "string | null",
"workflow_summary": "string | null",
"agent_tools_used": "string[]",
"supporting_links": "string[]",
"claim_review_status": "\"submitted\" | \"verified\" | \"not_verified\" | \"needs_revision\" | null",
"claim_reviewed_at": "string | null",
"claim_review_notes": "string | null",
"claim_verified_by": "string | null",
"claim_evidence_summary": "string | null",
"tools": [
{
"id": "string",
"name": "string",
"slug": "string",
"description": "string | null",
"icon_url": "string | null",
"category": "string",
"product_count": "number",
"created_at": "string"
}
],
"overview": "string | null",
"editorial_summary": "string | null",
"trust": {
"review_model": "\"manual\"",
"source_kind": "\"curated\" | \"user_submission\" | \"other\"",
"source_quality": "\"curated_evidence\" | \"reviewed_with_evidence\" | \"manual_review_only\"",
"source_url": "string",
"verified_at": "string | null",
"public_note": "string | null",
"evidence": [
{
"type": "string",
"url": "string"
}
]
},
"compatibility_matrix": [
{
"tool": {
"id": "string",
"name": "string",
"slug": "string",
"description": "string | null",
"icon_url": "string | null",
"category": "string",
"product_count": "number",
"created_at": "string"
},
"status": "\"core_stack\" | \"has_integration\" | \"supports_deployment\" | \"works_with\"",
"note": "string | null"
}
]
},
{
"id": "string",
"name": "string",
"slug": "string",
"description": "string",
"url": "string",
"favicon_url": "string | null",
"founder_name": "string | null",
"founder_twitter": "string | null",
"founder_profile_slug": "string | null",
"launch_date": "string | null",
"status": "\"approved\"",
"created_at": "string",
"approved_at": "string | null",
"view_count": "number",
"is_featured": "boolean",
"featured_rank": "number",
"screenshot_url": "string | null",
"submission_tier": "\"free\" | \"paid_fast_track\"",
"review_priority": "number",
"audience_tags": [
"\"for-developers\" | \"for-founders\" | \"b2b\" | \"consumer\""
],
"badge_verified": "boolean",
"is_agent_product": "boolean",
"qualification_type": "\"agent_native\" | \"agent_built\" | \"agentic_workflow\" | null",
"agent_use_case": "\"support\" | \"research\" | \"operations\" | \"sales\" | \"voice\" | \"browser_automation\" | null",
"qualification_statement": "string | null",
"workflow_summary": "string | null",
"agent_tools_used": "string[]",
"supporting_links": "string[]",
"claim_review_status": "\"submitted\" | \"verified\" | \"not_verified\" | \"needs_revision\" | null",
"claim_reviewed_at": "string | null",
"claim_review_notes": "string | null",
"claim_verified_by": "string | null",
"claim_evidence_summary": "string | null",
"tools": [
{
"id": "string",
"name": "string",
"slug": "string",
"description": "string | null",
"icon_url": "string | null",
"category": "string",
"product_count": "number",
"created_at": "string"
}
],
"overview": "string | null",
"editorial_summary": "string | null",
"trust": {
"review_model": "\"manual\"",
"source_kind": "\"curated\" | \"user_submission\" | \"other\"",
"source_quality": "\"curated_evidence\" | \"reviewed_with_evidence\" | \"manual_review_only\"",
"source_url": "string",
"verified_at": "string | null",
"public_note": "string | null",
"evidence": [
{
"type": "string",
"url": "string"
}
]
},
"compatibility_matrix": [
{
"tool": {
"id": "string",
"name": "string",
"slug": "string",
"description": "string | null",
"icon_url": "string | null",
"category": "string",
"product_count": "number",
"created_at": "string"
},
"status": "\"core_stack\" | \"has_integration\" | \"supports_deployment\" | \"works_with\"",
"note": "string | null"
}
]
}
],
"comparison": {
"shared_tools": [
{
"id": "string",
"name": "string",
"slug": "string",
"description": "string | null",
"icon_url": "string | null",
"category": "string",
"product_count": "number",
"created_at": "string"
}
],
"unique_tools": {
"<left-slug>": [
{
"id": "string",
"name": "string",
"slug": "string",
"description": "string | null",
"icon_url": "string | null",
"category": "string",
"product_count": "number",
"created_at": "string"
}
],
"<right-slug>": [
{
"id": "string",
"name": "string",
"slug": "string",
"description": "string | null",
"icon_url": "string | null",
"category": "string",
"product_count": "number",
"created_at": "string"
}
]
},
"shared_audience_tags": [
"\"for-developers\" | \"for-founders\" | \"b2b\" | \"consumer\""
],
"agent_use_case": {
"left": "\"support\" | \"research\" | \"operations\" | \"sales\" | \"voice\" | \"browser_automation\" | null",
"right": "\"support\" | \"research\" | \"operations\" | \"sales\" | \"voice\" | \"browser_automation\" | null",
"same": "boolean"
},
"qualification_type": {
"left": "\"agent_native\" | \"agent_built\" | \"agentic_workflow\" | null",
"right": "\"agent_native\" | \"agent_built\" | \"agentic_workflow\" | null",
"same": "boolean"
},
"claim_review_status": {
"left": "\"submitted\" | \"verified\" | \"not_verified\" | \"needs_revision\" | null",
"right": "\"submitted\" | \"verified\" | \"not_verified\" | \"needs_revision\" | null",
"same": "boolean"
},
"trust": {
"<left-slug>": {
"claim_review_status": "\"submitted\" | \"verified\" | \"not_verified\" | \"needs_revision\" | null",
"badge_verified": "boolean",
"is_featured": "boolean",
"approved_at": "string | null",
"source_quality": "\"curated_evidence\" | \"reviewed_with_evidence\" | \"manual_review_only\" | null"
},
"<right-slug>": {
"claim_review_status": "\"submitted\" | \"verified\" | \"not_verified\" | \"needs_revision\" | null",
"badge_verified": "boolean",
"is_featured": "boolean",
"approved_at": "string | null",
"source_quality": "\"curated_evidence\" | \"reviewed_with_evidence\" | \"manual_review_only\" | null"
}
},
"summary": [
"string"
]
}
}Error codes
| Code | Status | Meaning |
|---|---|---|
VALIDATION_ERROR | 400 | Missing, malformed, or unsupported request data. |
INTERNAL_ERROR | 500 | Unexpected server error. Retry later. |
Operational notes
- Call this after you already have candidate slugs and need a machine-readable comparison object for decision-making or ranking explanations.
- The endpoint requires exactly two unique slugs.
- Both products must already be approved and public.