Will give you clues how to create it:
First you need to create guest quote:
use Magento\Quote\Api\CartManagementInterface;
use Magento\Quote\Api\CartRepositoryInterface;
$quoteId = $this->cartManagementInterface->createEmptyCart();
$quote = $this->cartRepositoryInterface->get($quoteId);
Then add product:
$quote->addProduct($product, $qty);
$addressData = [
'telephone' => '', //fill data
'email' => '', //fill data
'firstname' => '', //fill data
'lastname' => '', //fill data
'street' => '', //fill data
'city' => '', //fill data
'country_id' => '', //add country code you need
'postcode' => '', //fill data
'save_in_address_book' => 0
];
$quote->getShippingAddress()->addData($addressData);
$quote->getBillingAddress()->addData($addressData);
$shippingAddress = $quote->getShippingAddress();
$shippingAddress->setCollectShippingRates(true)
->collectShippingRates()
->setShippingMethod('freeshipping_freeshipping'); //Add any shipping method, should be enabled
$quote->setPaymentMethod('checkmo'); //Add any you want, payment method should be enabled
$quote->setInventoryProcessed(false);
$quote->getPayment()->importData(['method' => 'checkmo']); //Add any you want, payment method should be enabled
$quote->collectTotals();
$quote->save();
And after there is quote with products, shipping method, payment method (that doesn't require any action after order is placed), you can place guest order:
use Magento\Quote\Api\GuestCartManagementInterface;
$orderId = $this->guestCartManagement->placeOrder($quoteId)
After order placed, you should bet order id in response.