Pull your Recruiterflow data into Microsoft Power BI to build custom dashboards and reports — covering candidates, jobs, stage movements, and deals.
What you'll need
A Recruiterflow account with admin access
Microsoft Power BI Desktop installed
Step 1: Get your Recruiterflow API key
Go to Settings → Integrations.
Find the Power BI section and copy your authentication (API) key.
Keep this key handy — you'll paste it into Power BI in the next step.
Step 2: Create a data query in Power BI
In Power BI Desktop, click Get Data in the toolbar and select Blank Query. This opens the query editor.
In the query editor, paste the function below. This example fetches candidate data — replace
INSERT KEYwith your API key from Step 1.
= (current_page) =>
let
apiKey = "INSERT KEY",
headers = [#"powerbi-api-key" = apiKey],
baseUrl = "https://recruiterflow.com/api/integrations/feed/power-bi",
relativePath = "candidates",
queryParameters = [
items_per_page = "100",
current_page = Number.ToText(current_page)
],
Source = Json.Document(Web.Contents(baseUrl, [
RelativePath = relativePath,
Query = queryParameters,
Headers = headers
]))
in
Source
To test the connection, enter
1in the current_page field and invoke the function. You should see your candidate records load.
Each page returns up to 100 records. To pull all pages automatically, add the pagination function in the next step.
Step 3: Add pagination to pull all records
Rather than invoking the function page by page, add a second blank query with this pagination function. It loops through all pages automatically and loads the full dataset into your data model.
Click New Source → Blank Query to open another query editor.
Paste the pagination function below:
= List.Generate(
() => [current_page = 1, candidate = FnGetCandidates(current_page)],
each not List.IsEmpty([candidate][data]),
each [current_page = [current_page] + 1, candidate = FnGetCandidates(current_page)],
each [candidate]
)
This function references FnGetCandidates — the name of the query you created in Step 2. Rename your Step 2 query to match if needed.
Available endpoints
Replace candidates in the relativePath to pull other data types:
candidates— candidate and contact recordsjobs— job recordsstage-movements— every stage change across all jobsdeals— deal pipeline dataplacements— placement/hiring records
All endpoints support items_per_page (max 100) and current_page as query parameters.
Data fields reference
Below are the fields available from each endpoint.
Candidates & Contacts: id, first-name, last-name, email, phone-number, current-designation, current-organization, location, city, state, country, postal-code, street-address-1, street-address-2, source-name, tags, added-time, added-by-name, added-by-email, lead-owner-name, lead-owner-email, last-contacted, last-contact-type, last-engaged, last-engagement-type, latest-activity-time, submission-times, linkedin-profile, github-profile, twitter-profile, facebook-profile, angellist-profile, behance-profile, dribbble-profile, xing-profile, img-link, do-not-email, company-block-status, candidate.Jobs, education-details, custom-fields
Jobs: id, name, title, department, employment-type, number-of-openings, skills, client-company-name, created-by-name, created-by-email, last-opened, candidate-sourced, candidate-applied, candidate-hired, custom-fields
Stage Movement: prospect-id, first-name, last-name, from-stage-name, to-stage-name, stage-moved-by-name, added-time, added-by-name, added-by-email, lead-owner-name, lead-owner-email, client-company-name, source-name, current-designation, current-organization, location, city, state, country, linkedin-profile, twitter-profile, facebook-profile, github-profile, angellist-profile, behance-profile, dribbble-profile, xing-profile
Deals: id, name, deal-amount, amount-currency, deal-owner-name, client-company-name, current-stage-name, closed-date
Things to know
The API key is account-level — treat it like a password and don't share it publicly.
Each page returns a maximum of 100 records. Use the pagination function for full data pulls.
Data is pulled live from Recruiterflow each time you refresh in Power BI — there's no cached copy.
Custom fields are included in the
custom-fieldskey for candidates, contacts, and jobs.





