FARA Foreign Agent Registration Search
Search the U.S. Department of Justice FARA (Foreign Agents Registration Act) database for foreign agent registrations. Look up lobbying firms, PR agencies, and consultants registered as foreign agents, including their foreign principals, filing documents, and registration status. Get structured profiles combining data from three separate FARA API endpoints into a single unified record per registrant.
Maintenance Pulse
90/100Cost Estimate
How many results do you need?
Pricing
Pay Per Event model. You only pay for what you use.
| Event | Description | Price |
|---|---|---|
| result-returned | Charged per screening result returned. | $0.04 |
Example: 100 events = $4.00 · 1,000 events = $40.00
Documentation
Search the U.S. Department of Justice FARA (Foreign Agents Registration Act) database for foreign agent registrations. Look up lobbying firms, PR agencies, and consultants registered as foreign agents, including their foreign principals, filing documents, and registration status. Get structured profiles combining data from three separate FARA API endpoints into a single unified record per registrant.
FARA Foreign Agent Registration Search queries the official efile.fara.gov API to build comprehensive registrant profiles. Each profile includes the registrant's name, address, registration and termination dates, a list of foreign principals (the governments, entities, or persons they represent), and links to all filing documents. The actor handles the FARA API's strict rate limits (5 requests per 10 seconds) automatically with built-in throttling and retry logic.
What data can you extract?
| Data Point | Source | Example |
|---|---|---|
| Registration number | FARA registry | 6942 |
| Registrant name | Registration record | Podesta Group, Inc. |
| Business name | Registration record | Podesta Group |
| Status | Registry lookup | Active, Terminated |
| Registration date | Filing metadata | 01/15/2010 |
| Termination date | Filing metadata | 06/30/2017 |
| Address | Registration record | 1001 G Street NW, Suite 1000 West |
| Foreign principals | Principals endpoint | Name, country, state, registration date |
| Filing documents | Documents endpoint | Type, date, PDF download link |
Why use FARA Foreign Agent Registration Search?
The FARA efile website provides basic search, but assembling a complete picture of a registrant requires clicking through multiple pages and endpoints: the registrant list, the foreign principals list, and the documents list. Cross-referencing entities across these datasets manually is tedious and error-prone, especially when researching dozens of registrants or tracking all agents working for a specific country.
This actor combines all three API endpoints into a single query. Search by registrant name, foreign principal, country, or registration number and get back unified profiles with everything in one record.
Built on the Apify platform, FARA Foreign Agent Registration Search gives you:
- Scheduling -- monitor new registrations weekly or monthly
- API access -- trigger searches programmatically from Python, JavaScript, or any HTTP client
- Monitoring -- get notified when runs complete or fail
- Integrations -- connect to Zapier, Make, Google Sheets, or webhooks
Features
- Multi-filter search -- search by registrant name, foreign principal name, country, registration number, or new registrations since a specific date
- Unified profiles -- combines registrant data, foreign principals, and filing documents from 3 separate API endpoints into one record
- Status filtering -- search active agents, terminated agents, or both
- Foreign principal lookup -- find which U.S. agents represent a specific foreign government or entity
- Document links -- includes direct links to registration statements, supplemental statements, and other FARA filings
- New registration monitoring -- filter for registrants registered after a specific date to track new foreign lobbying activity
- Rate limit handling -- built-in throttling (2.1 seconds between requests) with automatic retry on 429 responses
- Direct lookup -- look up a specific registrant by registration number for instant access
Use cases for searching FARA data
Investigative journalism
Journalists research which U.S. lobbying firms and PR agencies represent foreign governments. Search by country to identify all agents working for a specific nation and review their filing documents.
Policy research and advocacy
Think tanks and policy organizations track foreign lobbying activity around specific legislation. Monitor new registrations and filing documents to understand which foreign interests are active on Capitol Hill.
Compliance and due diligence
Law firms and compliance teams verify whether business partners or counterparties are registered as foreign agents. FARA registration status is a key data point in KYC (Know Your Customer) and anti-corruption due diligence.
Academic research
Political scientists study patterns in foreign lobbying -- which countries hire the most agents, how lobbying spending correlates with policy outcomes, and how the FARA registry has evolved over time.
Competitive intelligence for lobbying firms
Government affairs firms track which competitors are picking up foreign principal contracts and which countries are actively seeking new U.S. representation.
National security analysis
Security analysts monitor registrations linked to adversarial nations to track potential foreign influence operations.
How to search FARA registrations
- Choose a search filter -- Enter a registrant name, foreign principal name, country, registration number, or new-since date. At least one filter is required.
- Set status filter -- Choose whether to search active agents, terminated agents, or both.
- Configure options -- Enable or disable foreign principal and document fetching depending on how much detail you need.
- Run the actor -- Click "Start" to begin the search. The actor fetches registrants, filters matches, then enriches each with principals and documents.
- Download results -- Once finished, download your data as JSON, CSV, or Excel from the Dataset tab.
Input parameters
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
registrantName | string | No* | -- | Search for registrant/agent by name (case-insensitive substring match). |
foreignPrincipalName | string | No* | -- | Search by foreign principal name (the government, entity, or person represented). |
country | string | No* | -- | Filter by country of foreign principal (e.g., China, Russia, Saudi Arabia). |
registrationNumber | string | No* | -- | Look up a specific registrant by FARA registration number. |
status | string | No | Active | Registration status filter: Active, Terminated, or Both. |
includeDocuments | boolean | No | true | Fetch filing document links for each registrant. Slower due to rate limits. |
includePrincipals | boolean | No | true | Fetch foreign principals for each registrant. |
newSinceDate | string | No* | -- | Only return registrants registered after this date (MM-DD-YYYY format). |
maxResults | integer | No | 50 | Maximum number of registrant profiles to return (1-5,000). |
*At least one search filter is required.
Input examples
Search by country:
{
"country": "China",
"status": "Active",
"maxResults": 50
}
Look up a specific registration:
{
"registrationNumber": "6942"
}
Search by registrant name:
{
"registrantName": "Mercury",
"status": "Both",
"includeDocuments": true,
"includePrincipals": true
}
Find new registrations:
{
"newSinceDate": "01-01-2025",
"maxResults": 100
}
Search by foreign principal:
{
"foreignPrincipalName": "Embassy",
"status": "Active",
"maxResults": 25
}
Input tips
- Start with principals disabled for speed -- Fetching foreign principals requires additional API calls per registrant. Disable
includePrincipalsandincludeDocumentsfor faster initial searches, then re-run with full detail on interesting results. - Use country filter for broad searches -- Searching by country across active registrants gives you a complete picture of which firms represent a specific nation.
- Combine name and country -- Use both
registrantNameandcountrytogether to narrow results when searching for a specific firm's work for a particular country.
Output example
Each item in the output dataset represents one FARA registrant profile:
{
"registrationNumber": "6942",
"registrantName": "Mercury Public Affairs, LLC",
"businessName": "Mercury Public Affairs",
"status": "Active",
"registrationDate": "03/15/2019",
"terminationDate": null,
"address": "1001 G Street NW, Suite 1000 West",
"city": "Washington",
"state": "DC",
"zip": "20001",
"country": "United States",
"foreignPrincipals": [
{
"name": "Republic of Turkey",
"country": "TURKEY",
"state": "",
"registrationDate": "03/15/2019"
}
],
"filingDocuments": [
{
"type": "Registration Statement",
"stampedDate": "03/20/2019",
"documentUrl": "https://efile.fara.gov/docs/6942-Registration-Statement-20190320.pdf"
},
{
"type": "Supplemental Statement",
"stampedDate": "09/30/2019",
"documentUrl": "https://efile.fara.gov/docs/6942-Supplemental-Statement-20190930.pdf"
}
],
"totalPrincipals": 1,
"totalDocuments": 2,
"sourceUrl": "https://efile.fara.gov/ords/fara/f?p=1235:11:::NO::P11_REG_NUMBER:6942"
}
Output fields
| Field | Type | Description |
|---|---|---|
registrationNumber | string | FARA registration number |
registrantName | string | Name of the registered agent |
businessName | string | Business/company name of the registrant |
status | string | Registration status: Active, Terminated, or New |
registrationDate | string | Date of initial registration |
terminationDate | string/null | Date registration was terminated (null if still active) |
address | string | Street address of the registrant |
city | string | City |
state | string | State |
zip | string | ZIP code |
country | string | Country of the registrant |
foreignPrincipals | object[]/null | List of foreign principals with name, country, state, and registration date (null if not requested) |
filingDocuments | object[]/null | List of filing documents with type, stamped date, and document URL (null if not requested) |
totalPrincipals | number/null | Count of foreign principals |
totalDocuments | number/null | Count of filing documents |
sourceUrl | string | Direct URL to the registrant's page on efile.fara.gov |
How much does it cost to search FARA data?
FARA Foreign Agent Registration Search uses compute-based pricing on the Apify platform. The primary factor affecting cost is the number of registrants found and whether principals/documents are fetched (each requires additional API calls with rate-limited delays).
| Scenario | Results | Principals | Documents | Est. Runtime | Est. Cost |
|---|---|---|---|---|---|
| Single lookup | 1 | Yes | Yes | ~10 sec | ~$0.003 |
| Small search | 10 | Yes | Yes | ~1 min | ~$0.02 |
| Country search | 50 | Yes | Yes | ~5 min | ~$0.08 |
| Large search | 100 | No | No | ~30 sec | ~$0.01 |
| Large search (full) | 100 | Yes | Yes | ~10 min | ~$0.15 |
Apify Free Tier: New Apify accounts receive $5 of free platform credits each month.
Search FARA data using the API
Python
from apify_client import ApifyClient
client = ApifyClient("YOUR_API_TOKEN")
run = client.actor("ryanclinton/fara-foreign-agents").call(run_input={
"country": "China",
"status": "Active",
"includePrincipals": True,
"includeDocuments": True,
"maxResults": 25,
})
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
print(f"{item['registrantName']} (#{item['registrationNumber']})")
for fp in item.get("foreignPrincipals") or []:
print(f" Principal: {fp['name']} ({fp['country']})")
JavaScript
import { ApifyClient } from "apify-client";
const client = new ApifyClient({ token: "YOUR_API_TOKEN" });
const run = await client.actor("ryanclinton/fara-foreign-agents").call({
country: "China",
status: "Active",
includePrincipals: true,
includeDocuments: true,
maxResults: 25,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
for (const item of items) {
console.log(`${item.registrantName} (#${item.registrationNumber})`);
(item.foreignPrincipals || []).forEach(fp =>
console.log(` Principal: ${fp.name} (${fp.country})`)
);
}
cURL
# Start the actor run
curl -X POST "https://api.apify.com/v2/acts/ryanclinton~fara-foreign-agents/runs?token=YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"country": "China",
"status": "Active",
"maxResults": 25
}'
# Fetch results (replace DATASET_ID from the run response)
curl "https://api.apify.com/v2/datasets/DATASET_ID/items?token=YOUR_API_TOKEN&format=json"
How the FARA search works
The actor builds unified registrant profiles by combining data from three FARA API v1 endpoints:
Step 1: Fetch registrant list
Depending on input filters, the actor fetches either active registrants, terminated registrants, both, or new registrations since a date. The FARA API returns all registrants in a single response per status category, so the actor loads the full list and filters locally by name and country.
Step 2: Filter and match
Registrant name matching uses case-insensitive substring search against both the Registrant_Name and Business_Name fields. Country filtering matches against the registrant's country field. If a foreignPrincipalName filter is provided, the actor must fetch principals for each candidate registrant to check for matches -- this is slower due to rate limits.
Step 3: Enrich with principals and documents
For each matched registrant (up to maxResults), the actor fetches the foreign principals list and filing documents from their respective API endpoints. The FARA API has a strict rate limit of 5 requests per 10 seconds, so the actor enforces a 2.1-second delay between requests with automatic 10-second backoff on 429 responses.
Step 4: Build unified profile
The registrant data, principals, and documents are merged into a single profile object. Field names in the FARA API are inconsistent (sometimes Registration_Number, sometimes Reg_Number), so the actor tries multiple key variations with case-insensitive matching.
Limitations
- Rate limits -- The FARA API allows only 5 requests per 10 seconds. Searches with many results and full enrichment (principals + documents) are inherently slow. A search returning 100 registrants with full enrichment takes approximately 10 minutes.
- API field inconsistency -- The FARA API uses inconsistent field names across responses. The actor handles known variations, but unexpected changes to the API could cause missing fields.
- No full-text search -- The actor searches by registrant name, principal name, and country only. It does not search within the content of filing documents.
- Local filtering -- The FARA API does not support server-side filtering by name. The actor downloads all registrants of the specified status and filters locally, which means even narrow searches require fetching the complete registrant list.
- Date format -- The
newSinceDateparameter requires MM-DD-YYYY format (U.S. date format), matching the FARA API's expected format. - No pagination -- The FARA API returns all registrants in a single response. The
maxResultsparameter limits output after filtering, not API calls.
Integrations
- Zapier -- Trigger workflows when new foreign agent registrations are detected.
- Make -- Build automated monitoring pipelines for foreign lobbying activity.
- Google Sheets -- Export registrant profiles to Google Sheets for collaborative analysis.
- Apify API -- Call the actor programmatically from any language or platform.
- Webhooks -- Get notified when a search completes and process results automatically.
FAQ
What is FARA? The Foreign Agents Registration Act (FARA) is a U.S. law that requires persons acting as agents of foreign principals in a political or quasi-political capacity to disclose their relationship with the foreign principal, as well as activities, receipts, and disbursements in support of those activities. It is administered by the DOJ's FARA Registration Unit.
What types of entities register under FARA? Lobbying firms, law firms, PR agencies, consultants, and individuals who engage in political activities, public relations, or lobbying on behalf of foreign governments, political parties, or entities controlled by foreign governments.
How current is the FARA data? The data comes from the official efile.fara.gov API, which is the DOJ's electronic filing system. Registrations and documents are available as soon as they are processed by the FARA Registration Unit.
Can I search for all agents representing a specific country?
Yes. Use the country filter with the country name (e.g., "China", "Russia", "Saudi Arabia"). The actor will return all registrants associated with foreign principals from that country.
Why is the search slow when using foreign principal name filter? When filtering by foreign principal name, the actor must fetch the principals list for each candidate registrant to check for matches. With the FARA API's rate limit of 5 requests per 10 seconds, this adds approximately 2 seconds per registrant checked.
What document types are in the filings? Common document types include Registration Statement, Supplemental Statement, Amendment, Exhibit A (agreement), Exhibit B (activities), Short-Form Registration Statement, and Termination filings.
Can I download the actual filing PDFs?
Yes. Each document in the filingDocuments array includes a documentUrl that links directly to the PDF filing on efile.fara.gov.
Related actors
| Actor | How to combine |
|---|---|
| Website Contact Scraper | Find contact information for registered lobbying firms identified in FARA searches |
| B2B Lead Gen Suite | Build comprehensive profiles of lobbying firms combining FARA data with business intelligence |
| WHOIS Domain Lookup | Research domain ownership for entities mentioned in FARA filings |
Support
Found a bug or have a feature request? Open an issue in the Issues tab on this actor's page. For custom compliance or research solutions, reach out through the Apify platform.
How it works
Configure
Set your parameters in the Apify Console or pass them via API.
Run
Click Start, trigger via API, webhook, or set up a schedule.
Get results
Download as JSON, CSV, or Excel. Integrate with 1,000+ apps.
Use cases
Sales Teams
Build targeted lead lists with verified contact data.
Marketing
Research competitors and identify outreach opportunities.
Data Teams
Automate data collection pipelines with scheduled runs.
Developers
Integrate via REST API or use as an MCP tool in AI workflows.
Related actors
GitHub Repository Search
Search GitHub repositories by keyword, language, topic, stars, forks. Sort by stars, forks, or recently updated. Returns metadata, topics, license, owner info, URLs. Free API, optional token for higher limits.
Website Content to Markdown
Convert any website to clean Markdown for RAG pipelines, LLM training, and AI apps. Crawls pages, strips boilerplate, preserves headings, tables, and code blocks. GFM support.
Weather Forecast Search
Get weather forecasts for any location worldwide using the free Open-Meteo API. Returns current conditions, daily and hourly forecasts with temperature, precipitation, wind, UV index, and more. No API key needed.
EUIPO EU Trademark Search
Search EU trademarks via official EUIPO database. Find registered and pending trademarks by name, Nice class, applicant, or status. Returns full trademark details and filing history.
Ready to try FARA Foreign Agent Registration Search?
Start for free on Apify. No credit card required.
Open on Apify Store