Search API
Full-text search across fundraisers, organizations, and users with advanced filtering.
Search Fundraisers
GET /api/v1/search/fundraisers
Search for fundraisers using full-text search with filtering and sorting.
Query Parameters
q(string, required) - Search querycategory(uuid) - Filter by categorystatus(string) - Filter by statusmin_goal(number) - Minimum goal amountmax_goal(number) - Maximum goal amountlocation(string) - Filter by locationsort(string) - Sort by relevance, date, or amountlimit(integer) - Results per page (default 20)offset(integer) - Pagination offset
javascript
const API_BASE = 'https://api.fundlyhub.org/api/v1';
const searchTerm = 'medical emergency';
const params = new URLSearchParams({
q: searchTerm,
status: 'active',
category: 'medical-category-uuid',
sort: 'relevance',
limit: '20',
offset: '0'
});
const response = await fetch(`https://api.fundlyhub.org/api/v1/search/fundraisers?${params}`);
const results = await response.json();
// Response format
{
"results": [
{
"id": "...",
"title": "Emergency Medical Fund",
"description": "Help cover medical expenses",
"relevance_score": 0.95,
"snippet": "...medical emergency...",
"category": { "name": "Medical", "emoji": "🏥" },
"raised": 12500,
"goal": 50000
}
],
"total": 42,
"page": 1,
"pages": 3
}Search Organizations
GET /api/v1/search/organizations
Search for verified nonprofit organizations.
javascript
const API_BASE = 'https://api.fundlyhub.org/api/v1';
const response = await fetch(
`https://api.fundlyhub.org/api/v1/search/organizations?q=food+bank&verified=true`
);
const results = await response.json();
results.results.forEach(org => {
console.log(`${org.name} - ${org.ein}`);
});Autocomplete
GET /api/v1/search/autocomplete
Get search suggestions for autocomplete functionality.
javascript
const API_BASE = 'https://api.fundlyhub.org/api/v1';
const query = 'med';
const response = await fetch(
`https://api.fundlyhub.org/api/v1/search/autocomplete?q=${encodeURIComponent(query)}&limit=10`
);
const suggestions = await response.json();
// Response format
[
{ "text": "medical", "type": "term", "count": 145 },
{ "text": "medical emergency", "type": "term", "count": 67 },
{ "text": "medicine", "type": "term", "count": 23 },
{ "text": "Medical Relief Fund", "type": "fundraiser", "id": "..." }
]Advanced Search
Search with Multiple Filters
javascript
const API_BASE = 'https://api.fundlyhub.org/api/v1';
const params = new URLSearchParams({
q: 'education',
category: 'education-uuid',
location: 'California',
min_goal: '5000',
max_goal: '50000',
status: 'active',
sort: 'amount_raised',
limit: '20'
});
const response = await fetch(`https://api.fundlyhub.org/api/v1/search/fundraisers?${params}`);
const results = await response.json();
console.log(`Found ${results.total} education fundraisers in California`);Sort Options
relevance- By search relevance (default)date- Most recent firstamount_raised- Highest amount raisedgoal- Highest goal amounttrending- Most donations in last 7 days
javascript
// Sort by most raised
const response = await fetch(
`https://api.fundlyhub.org/api/v1/search/fundraisers?q=community&sort=amount_raised`
);Search Tips
Phrase Search
Use quotes for exact phrases:
javascript
// Search for exact phrase
const response = await fetch(
`https://api.fundlyhub.org/api/v1/search/fundraisers?q="medical emergency fund"`
);Tag Search
Search by tags:
javascript
// Find fundraisers with specific tags
const response = await fetch(
`https://api.fundlyhub.org/api/v1/search/fundraisers?tags=veteran,PTSD`
);Response Codes
200- Success400- Bad request / Invalid query429- Rate limit exceeded500- Server error