Lapa APIlapa.ninja ↗
Search 7,300+ curated landing page designs from Lapa Ninja. Get titles, categories, colors, tags, thumbnails, and live website URLs via one API endpoint.
What is the Lapa API?
The Lapa Ninja API exposes a single endpoint, search_designs, that queries a collection of over 7,300 curated landing page designs and returns up to 12 fields per result, including title, categories, color palettes, tags, thumbnail URLs, and the live website URL. Results are paginated via limit and offset parameters, with total_hits indicating the full matched set size. It's suited for design research tools, trend dashboards, or any workflow that needs structured access to real-world landing page examples.
curl -X POST 'https://api.parse.bot/scraper/318239e3-3e8b-4c05-8af7-1f1e341030d6/search_designs' \
-H 'X-API-Key: $PARSE_API_KEY' \
-H 'Content-Type: application/json' \
-d '{
"limit": "20",
"query": "fintech",
"offset": "0"
}'Typed, relational, agent-ready
A generated client with real types, enums, and the links between objects — the structure a flat JSON response can't carry. Autocompletes in your editor and reads cleanly to coding agents.
- Fully typed · autocompletes
- Objects link to objects
- Typed errors & pagination
Typed Python client. Set up the SDK in your uv project, then pull this API’s typed client:
uv add parse-sdk uv run parse init uv run parse add --marketplace lapa-ninja-api
uv run parse add --marketplace pulls a pinned snapshot of this canonical API — it won’t change underneath you. To customize it, subscribe and swap to your own copy.
"""Walkthrough: Lapa Ninja SDK — bounded, re-runnable; every call capped."""
from parse_apis.lapa_ninja_api import LapaNinja, InvalidInput
client = LapaNinja()
# Search for fintech-related landing page designs
for design in client.designs.search(query="fintech", limit=3):
print(design.title, design.categories, design.website_url)
# Drill-down: take one result for inspection
item = client.designs.search(query="saas dashboard", limit=1).first()
if item:
print(item.title, item.short_description, item.colors)
# Typed error handling for invalid input
try:
client.designs.search(query="", limit=1).first()
except InvalidInput as e:
print("invalid input:", e)
print("exercised: designs.search")
Full-text search across Lapa Ninja's landing page design collection. Matches query against titles, descriptions, categories, and tags. Returns paginated results with design metadata including categories, colors, and external website links. Results are auto-iterated by the SDK.
| Param | Type | Description |
|---|---|---|
| limit | integer | Maximum number of results to return per page (1-100). |
| queryrequired | string | Search query to match against landing page designs (titles, descriptions, categories, tags). |
| offset | integer | Number of results to skip for pagination. |
{
"type": "object",
"fields": {
"limit": "number of results returned per page",
"offset": "current offset in result set",
"designs": "array of landing page design objects with id, title, slug, descriptions, categories, colors, tags, website_url, thumbnail, and favicon",
"total_hits": "estimated total number of matching designs"
},
"sample": {
"data": {
"limit": 5,
"offset": 0,
"designs": [
{
"id": "post-2152",
"slug": "fintech",
"tags": [
"fintech"
],
"title": "FinTech Collective",
"colors": [
"multiple colors"
],
"favicon": "https://cdn.lapa.ninja/assets/favicons/fintech.png",
"thumbnail": "https://cdn.lapa.ninja/assets/images/1x/fintech-thumb.webp",
"categories": [
"Corporate",
"Business",
"Creative",
"Finance",
"Community"
],
"description": "We back creators with a hunger to reimagine the way money flows through the world.",
"website_url": "https://www.fintech.io/",
"short_description": "Reimagine the way money flows through the world"
}
],
"total_hits": 75
},
"status": "success"
}
}About the Lapa API
What the API Returns
The search_designs endpoint accepts a required query string and matches it against design titles, descriptions, categories, and tags across the Lapa Ninja collection. Each result in the designs array includes the design's id, title, slug, descriptions, categories, colors, tags, website_url, thumbnail, and fav (favorite count). The total_hits field tells you how many designs matched your query in total, regardless of the current page size.
Pagination and Filtering
Pagination is controlled by limit (1–100 results per page) and offset (number of results to skip). The SDK auto-iterates pages if you consume the full result set programmatically. There is no server-side filter for a specific category or color in the request — filtering by category or color must be done client-side against the returned categories and colors fields. Queries against broad terms like "SaaS" or "fintech" will surface designs where those terms appear in any of the indexed text fields.
Coverage and Data Shape
Each design record links to a live external site via website_url, making it straightforward to build a reference index or validation pipeline. The colors field exposes the palette associated with each design, useful for grouping designs by visual style. The thumbnail field provides a preview image URL. Coverage spans 7,300+ designs across a wide range of industries and design styles as indexed by Lapa Ninja's editorial team.
The Lapa API is a managed, monitored endpoint for lapa.ninja — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when lapa.ninja changes and a check fails, the API is automatically queued for repair and re-verified. It is built to keep working as the site underneath it changes.
This isn't an official lapa.ninja API — it's an independent, maintained REST wrapper over public data. Where the source has no official API (or only a limited one), Parse gives you a stable contract over a source that never promised one, and keeps it current. Need a new endpoint or field? You can revise it yourself in plain English and the agent rebuilds it against the live site in minutes — contributing the change back to the shared API is free.
Will this API break when the source site changes?+
Is this an official API from the source site?+
Can I fix or extend this API myself if I need a new endpoint or field?+
What happens if I call an endpoint that has an issue?+
- Build a design inspiration browser filtered by industry category using the returned
categoriesfield - Aggregate color palette trends across landing pages by parsing the
colorsfield from search results - Compile a tagged reference library of landing page examples for onboarding design teams
- Cross-reference
website_urlvalues to audit live design examples against brand guidelines - Generate a topic-specific design gallery (e.g. 'crypto', 'health') by querying relevant keywords
- Extract
thumbnailURLs to populate a visual mood board or design comparison tool - Track which design styles cluster around specific tags by indexing
tagsacross paginated results
| Tier | Price | Credits/month | Rate limit |
|---|---|---|---|
| Free | $0/mo | 100 | 5 req/min |
| Hobby | $30/mo | 1,000 | 20 req/min |
| Developer | $100/mo | 5,000 | 100 req/min |
One credit = one API call regardless of which marketplace API you call. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.
Does Lapa Ninja have an official developer API?+
Can I filter search results by category or color directly in the request?+
search_designs endpoint does not accept category or color as request-level filters. The query parameter matches against titles, descriptions, categories, and tags simultaneously. You can filter the returned categories and colors fields client-side after receiving results.Does the API return individual design detail pages or only search results?+
search_designs endpoint, which returns paginated search results. There is no dedicated endpoint for fetching a single design by its id or slug. You can fork the API on Parse and revise it to add a detail endpoint if you need richer per-design data.How fresh is the design data?+
date_added or updated_at field in the response to track recency of individual entries.Does the API expose user-submitted designs or only editorially curated ones?+
source_type field in the response. You can fork the API on Parse and revise it to add filtering logic if that distinction matters for your workflow.