use apify_client::{ApifyClient, StoreListOptions};
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
let token = std::env::var("APIFY_TOKEN").expect("set APIFY_TOKEN");
let client = ApifyClient::new(token);
let store_page = client
.store()
.list(StoreListOptions {
search: Some("hello world".to_string()),
limit: Some(25),
..Default::default()
})
.await?;
let actor_id = store_page
.items
.into_iter()
.find(|a| {
a.username.as_deref() == Some("apify") && a.name.as_deref() == Some("hello-world")
})
.map(|a| a.id)
.unwrap_or_else(|| "apify~hello-world".to_string());
println!("Using Store actor {actor_id}");
let run = client
.actor(&actor_id)
.call::<serde_json::Value>(None, Default::default(), Some(120))
.await?;
println!("Run {} finished with status {:?}", run.id, run.status);
if let Some(dataset_id) = &run.default_dataset_id {
let items = client
.dataset(dataset_id)
.list_items::<serde_json::Value>(Default::default())
.await?;
println!("Default dataset has {} item(s)", items.items.len());
}
Ok(())
}