Join us at FabCon Atlanta from March 16 - 20, 2026, for the ultimate Fabric, Power BI, AI and SQL community-led event. Save $200 with code FABCOMM.
Register now!Get Fabric Certified for FREE during Fabric Data Days. Don't miss your chance! Request now
Hi,
I've been trying to fetch dynamic data from an API with no known TotalPages parameter. There is a num_pages parameter, and a has_more one; if has_more is 1, there are more pages. So, I need to keep fetching pages until has_more = 0.
I've been trying variations of this:
let
apiKey = "{my_key}",
fnGetPage = (pageNum as number) =>
let
Source = Json.Document(Web.Contents("https://}myapi}", [
Headers = [
#"ApiKey" = apiKey
],
Query = [
num_page = pageNum
]
])),
Data = Source[data]
in
Data,
firstPage = Json.Document(Web.Contents("https://{myapi}", [
Headers = [
#"ApiKey" = apiKey
],
Query = [
num_page = 1
]
])),
hasMore = firstPage[has_more],
pageList = List.Generate(
() => 1,
each hasMore,
each _ + 1,
each (pageNum as number) =>
let
pageData = Json.Document(Web.Contents("https://{myapi}", [
Headers = [
#"ApiKey" = apiKey
],
Query = [
num_page = pageNum
]
])),
hasMore = pageData[has_more]
in
hasMore
),
pageNumbers = List.Transform(pageList, each { _ }), numbers
allPages = List.Transform(pageNumbers, each fnGetPage(_)),
combinedTable = Table.Combine(allPages)
in
combinedTable
but it seems wrong, and it's returning an error about the type being unable to convert number to Text.
I think I'm going about it the wrong way. Is there are obviously easier way of doing this?
Hello @djs1984,
Can you please try this updated approach:
let
apiKey = "{my_key}",
baseUrl = "https://{myapi}",
fnGetPage = (pageNum as number) =>
let
Source = Json.Document(Web.Contents(baseUrl, [
Headers = [#"ApiKey" = apiKey],
Query = [num_page = Text.From(pageNum)]
])),
Data = Source[data],
HasMore = Source[has_more]
in
[Data = Data, HasMore = HasMore],
AllPages = List.Generate(
() => [Page = 1, HasMore = true, Result = fnGetPage(1)],
each [HasMore],
each [Page = [Page] + 1, Result = fnGetPage([Page]), HasMore = [Result][HasMore]],
each [Result][Data]
),
CombinedTable = Table.Combine(List.Transform(AllPages, Table.FromList(_, Splitter.SplitByNothing(), {"Column1"})))
in
CombinedTable
Hi,
Thanks for responding. Unfortunately, I'm getting an error with that:
Check out the November 2025 Power BI update to learn about new features.
Advance your Data & AI career with 50 days of live learning, contests, hands-on challenges, study groups & certifications and more!