OnPromptAds prompts
AI prompts from the OnPromptAds library (onpromptads.com/prompts), with the browse page's filters and sorts: search text, the Ads / Non Ads tabs (type), category, AI tool, tags, free or paid, price range, rating range and publish dates. total and total_pages are the site's counts. Each prompt: id, slug, url, title, description, prompt_type, ai_tool, category, tags, preview_image, media (example images and videos), prompt_text (null when the site asks visitors to sign in for it, which is most prompts), prompt_word_count, prompt_text_locked, price, is_free, is_premium_only, is_featured, views, likes, downloads, rating, rating_count, creator (id, username, name, profile URL), usage_instructions, created_at, published_at, updated_at and raw. With q set, the site's search ignores tags, the price and rating ranges and the dates, and returns no prompts when ai_tool is also given. Pass next_page back as page; null on the last page. Use a prompt's slug with /onpromptads/v1/prompt.
Every response includes credits_used: the credits this call cost.
Parameters
| name | type | description |
|---|---|---|
q | string | Search text, e.g. watch, product photography. Example: watch |
type | all | ads | non_ads | The page's tabs: ads (advertising categories), non_ads (fun, social media, creative art, portrait, nature, education) or all (default). Ignored when category is set. |
category | string | Category slug: advertising, social-media-ads, product-photography, ecommerce, brand-marketing, lifestyle-ads, testimonials, commercial, educational, portrait, creative-art, social-media, fun, nature, education. |
ai_tool | chatgpt | claude | midjourney | dall-e | stable-diffusion | gemini | gemini-veo3 | kling | seedance | other | Only prompts written for this AI tool. |
tags | string | Comma-separated tag slugs (as in a prompt's tags); prompts with any of them, e.g. cinematic-lighting,8k-uhd. |
price | free | paid | Only free or only paid prompts. |
min_price | number | Lowest price (USD). |
max_price | number | Highest price (USD). |
min_rating | number | Lowest average rating, 0 to 5. |
max_rating | number | Highest average rating, 0 to 5. |
date_from | string | Published on or after this date (YYYY-MM-DD). |
date_to | string | Published on or before this date (YYYY-MM-DD). |
sort | newest | rating | downloads | views | price | Sort order (default newest). |
order | desc | asc | Sort direction (default desc; price with asc is cheapest first). |
page | integer | Page number (default 1). Pass next_page from the previous response; null on the last page. |
limit | integer | Prompts per page, 1 to 50 (default 24). |
Every endpoint also takes fresh, raw, fields (see lean responses and caching).
Example
curl "https://api.api.sh/onpromptads/v1/prompts?q=watch" \
-H "x-api-key: $APISH_KEY" import os, requests
res = requests.get(
"https://api.api.sh/onpromptads/v1/prompts",
params={"q": "watch"},
headers={"x-api-key": os.environ["APISH_KEY"]},
timeout=120,
)
res.raise_for_status()
data = res.json() const url = new URL("https://api.api.sh/onpromptads/v1/prompts");
url.searchParams.set("q", "watch");
const res = await fetch(url, { headers: { "x-api-key": process.env.APISH_KEY } });
if (!res.ok) throw new Error(`${res.status} ${await res.text()}`);
const data = await res.json(); Response
A JSON object with the fields described above, plus raw (the source's own data), cached, fetched_at and credits_used. Errors return {"success": false, "error": "…"} with the HTTP status (see errors). A lookup that ran but found nothing (404) costs the price above; refused calls and errors on our side are free (what's charged).