{"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}