Search public domain clipart on Openclipart.
Searches Openclipart, the public domain clipart library, like its search page: artwork title, link to the artwork page, and thumbnail image. First page of results (about 60 artworks). Sponsored ad slots are left out. Returns an empty list when nothing matches.
- Site
- Openclipart, United States
- Version
- v1
- Runs, last 7 days
- No reports yet
- sha256
- 570fda947fa8…
Run it with your agent
after installing WieldAsk in plain words. Your agent finds this recipe and calls it:
“Search public domain clipart on Openclipart.”
Read-only: it changes nothing on the site. No login needed.
{ "tool": "run", "arguments": { "recipe_id": "openclipart.org/search-titles", "params": { "query": "tree" } } }
Requests
sent from your browser, in order- 1GET/search/?queryServer-rendered search page /search/?query=...; read-only GET. Each artwork is a div.artwork holding a link to /detail/<id>/<slug>, an image with the title as alt text, and a picture with data-ocal-clip-id. Ad slots have no detail link and are dropped in output.
Parameters
from your agentquerystringrequiredClipart term, e.g. 'tree', 'owl', 'boat'
Returns
to your agentartworksobject[]id, thumbnail_url, title, url
querystring
Where it can send
- openclipart.org
Anything else is blocked by the extension.
Reads from your session
Nothing. Your browser attaches the site's cookies by itself.
Used only in requests to the addresses on the left. Never sent to wield.run or your agent.
Checks
a run passes when- length(output.artworks) > `0`
- length(output.artworks[?starts_with(url, 'https://openclipart.org/detail/')]) == length(output.artworks)
- length(output.artworks[?title != `null`]) == length(output.artworks)
Raw recipe
Served as canonical JSON from /api/v1/recipes/openclipart.org/search-titles, so its sha256 matches the ETag and the index.
Check it yourself
curl -s https://wield.run/api/v1/recipes/openclipart.org/search-titles | shasum -a 256 # 570fda947fa8d4c166d8c29382d5d7e7fd08e90d8e639e69f8e1e75bdc05d633
openclipart.org/search-titles.json, v1
{ "description": "Searches Openclipart, the public domain clipart library, like its search page: artwork title, link to the artwork page, and thumbnail image. First page of results (about 60 artworks). Sponsored ad slots are left out. Returns an empty list when nothing matches.", "effect": "read", "id": "openclipart.org/search-titles", "keywords": [ "openclipart", "clipart", "clip art", "public domain", "vector", "svg", "images", "illustrations", "free", "graphics", "drawings", "artwork" ], "output": { "schema": { "properties": { "artworks": { "items": { "properties": { "id": { "description": "Openclipart artwork id", "type": [ "integer", "null" ] }, "thumbnail_url": { "type": [ "string", "null" ] }, "title": { "type": "string" }, "url": { "type": "string" } }, "required": [ "title", "url" ], "type": "object" }, "type": "array" }, "query": { "type": "string" } }, "required": [ "query", "artworks" ], "type": "object" }, "value": "{query: params.query, artworks: steps.search.artworks[?title != `null` && href != `null`].{title: title, id: (clip_id && to_number(clip_id)) || `null`, url: join('', ['https://openclipart.org', href]), thumbnail_url: (thumbnail && join('', ['https://openclipart.org', thumbnail])) || `null`}}" }, "params": { "additionalProperties": false, "properties": { "query": { "description": "Clipart term, e.g. 'tree', 'owl', 'boat'", "maxLength": 100, "minLength": 2, "type": "string" } }, "required": [ "query" ], "type": "object" }, "provenance": { "method": "har", "notes": "GET /search/?query=<query> returns server-rendered HTML with the first page of artworks in div.artwork tiles (detail link, image alt text as title, data-ocal-clip-id). Relative /detail and /image links are made absolute on openclipart.org. No hashed CSS classes are used. The recipe does not call other hosts.", "recorded_at": "2026-11-08T16:39:34.000Z", "recorded_by": "wield-forge (claude-haiku agent)" }, "requires_login": false, "schema": "https://wield.run/schema/recipe/v1.json", "site": { "country": "US", "id": "openclipart.org", "language": "en", "name": "Openclipart", "origin": "https://openclipart.org", "origins": [ "https://openclipart.org" ] }, "steps": [ { "description": "Server-rendered search page /search/?query=...; read-only GET. Each artwork is a div.artwork holding a link to /detail/<id>/<slug>, an image with the title as alt text, and a picture with data-ocal-clip-id. Ad slots have no detail link and are dropped in output.", "expect": { "content_type": "html", "status": [ 200 ] }, "extract": { "html_items": { "artworks": { "fields": { "clip_id": { "attr": "data-ocal-clip-id", "selector": "picture[data-ocal-clip-id]" }, "href": { "attr": "href", "selector": "a[href^='/detail/']" }, "thumbnail": { "attr": "src", "selector": "a[href^='/detail/'] img" }, "title": { "attr": "alt", "selector": "a[href^='/detail/'] img" } }, "max": 60, "selector": "div.artwork" } } }, "id": "search", "request": { "headers": { "Accept": "text/html" }, "method": "GET", "query": { "query": "{{params.query}}" }, "url": "/search/" } } ], "task": "Search public domain clipart on Openclipart", "tos": { "notes": "Not reviewed. One search page per call, the same page a visitor loads. The site's terms on automated access were not checked.", "reviewed": false }, "verify": { "checks": [ "length(output.artworks) > `0`", "length(output.artworks[?starts_with(url, 'https://openclipart.org/detail/')]) == length(output.artworks)", "length(output.artworks[?title != `null`]) == length(output.artworks)" ], "example_params": { "query": "tree" }, "max_ms": 5000 }, "version": 1 }