Search instruments
Screening
Search Instruments
Search stocks and ETFs by ticker or company/fund name. Returns 200
with an empty array when nothing matches.
Every item carries a type discriminator (stock | etf). Stock items
include a compliance status; ETF items instead expose Shariah purity
(purity_percentage, badge_color) and match_coverage_percent, and
carry no status field. Use the types parameter to filter to one
kind — omit it to receive both.
GET
Search instruments
Search returns both stocks and ETFs. Every item carries a
type
discriminator so you can branch on it:
type: "stock"— includes a compliancestatus(compliant|non-compliant|pending) andlast_analyzed_at.type: "etf"— includes Shariah purity (purity_percentageandbadge_color) plusmatch_coverage_percent, and carries nostatusfield. An ETF’s purity is deliberately not collapsed into a binary compliant/non-compliant verdict. Route ETF hits to Get an ETF for the full holdings-based breakdown.
match_coverage_percent is the percent of fund weight whose holdings are
matched to a screened instrument — it is match coverage, not screened
coverage. Do not present it as ”% screened”. purity_percentage /
badge_color are the screened verdict and are null until the ETF has been
screened.Filtering by type
The optionaltypes query parameter narrows results to one kind:
types=stock— stocks only (the pre-ETF response shape).types=etf— ETFs only.- Omitted — both (the default).
types is comma-separated and allow-list validated: any value other than
stock or etf returns 400 Bad Request.Authorizations
Query Parameters
Search query (ticker or company/fund name).
Minimum string length:
1Example:
"nvidia"
Required range:
1 <= x <= 100Comma-separated instrument-type filter. Allowed values: stock, etf. Omitted returns both. Any unrecognised value returns 400.
Example:
"stock"

