Ujjain to Agra Taxi Booking

Online Taxi Booking Form

Ujjain to Agra Taxi Service | Ujjain to Agra Taxi Fare | Ertiga & Innova Crysta Cab Booking | Contact Number

Book Ujjain to Agra Taxi Service with Saarthi Cabs at affordable price. Ujjain to Agra taxi fare start from ₹6900 for one-way sedan cab . Ujjain to Agra taxi rates per km Sedan ₹10/km, Ertiga ₹12/km, Ujjain to Agra Innova Crysta ₹20/km, and Tempo Traveller ₹22/km for Ujjain to Agra round trip. We offer one-way cabs, round trips, airport transfers, Force Urbania, and Tempo Traveller rentals. Enjoy professional drivers, clean vehicles, transparent pricing, doorstep pickup, and 24×7 customer support. Call or WhatsApp Saarthi Cabs at 09548976265 for Ujjain to Agra Taxi booking. We also offer Ujjain to Agra taxi packages all inclusive price at Sedan ₹3500, Ertiga ₹4500/day, Innova Crysta 6900/Day, Tempo Traveller ₹8500/Day for tour trip multicity or place visit.

Ujjain to Agra Taxi Service: Book One Way & Round Trip Cabs

Book a reliable Ujjain to Agra cab with our professional Ujjain to Agra cab Service. Saarthi Cabs offer One-way taxi Ujjain to Agra , easy cab booking, and affordable Ujjain to Agra taxi fare. Choose from premium Ujjain to Agra car rental, Ujjain airport to Agra taxi, and Ujjain to Agra outstation cab through seamless Ujjain to Agra online taxi booking. Travel comfortably in Ujjain to Agra Innova taxi or Ujjain to Agra tempo traveller. We also provide Ujjain to Agra round trip cab, trusted Ujjain to Agra taxi service, budget-friendly Ujjain to Agra cheap cab, and convenient Ujjain to Agra same-day taxi.

Ujjain to Agra Taxi Fare

Saarthi Cabs provides clear and affordable Ujjain to Agra taxi fare with complete transparency and no hidden charges. We offer budget-friendly Ujjain to Agra one-way cab fare, cost-effective Ujjain to Agra round trip taxi fare, and competitive Ujjain to Agra cab price for all vehicle types. Travelers can also check Ujjain Airport to Agra taxi fare with reliable pickup and drop service. Our Ujjain to Agra per km taxi rate is among the best in the market, ensuring safe, comfortable, and hassle-free travel for families, pilgrims, and tourists.

Taxi Fare Price - Cab Rate List 2026

Cab TypeTaxi Fare
Sedan Cab₹12/km
SUV Cab₹14/km
Innova Crysta Cab₹20/km
Tempo Traveller₹30/km
Note:
• All Fare is Approx Please call us for final price.
• For One Way Trip – Fare is All Inclusive ( Driver DA & Night Charges, Cab Rent, Fuel Charges)
• For Round Trip – Fare is All Exclusive ( All Extra – Driver DA & Night Charges, Toll Taxi, State Tax, Parking, Per Day Minimum Pay of 300 km in Plain Area.
• Tour trip in Hill Areas: Per Day Packages with 200 km in Hill Area Fare is All Inclusive ( Driver DA & Night Charges, Cab Rent, Fuel Charges) for extra Kilometer ₹2/km additional Charges on regular per km Rates
• Assured luggage space (either carrier or boot space) for Rs. 300
• Confirmed Car Model 2022 or above for Rs. 400
• Pet Allowed for Rs. 550
• Parking is Extra in all conditions.
• Upgrade to Refundable booking (100% refund for cancellation before 6 hours of departure time) Pay Extra 10% of Total Booking Amount.

Ujjain to Agra Cab Service

  • What is the Ujjain to Agra taxi fare?
  • Saarthi Cabs provides Ujjain to Agra taxi fare range ₹6900–₹16,560. Pricing is fully transparent with no hidden charges. Customers receive advance fare details ensuring affordable and reliable long-distance travel. For Ujjain to Agra taxi Booking Call
  • Do you provide Ujjain to Agra one-way cab service?
  • Yes, Saarthi Cabs offers one-way taxi service from Ujjain to Agra with doorstep pickup and professional drivers. Our Ujjain to Agra one-way cab fare ₹6900 (Starting Price). We provide clean, comfortable vehicles for long-distance travel at affordable rates, ensuring a smooth and hassle-free journey.
  • What are the round-trip taxi rates from Ujjain to Agra?
  • Saarthi Cabs round-trip rates are Ujjain to Agra taxi fare per km Sedan ₹10/km, Ertiga ₹12/km, Innova Crysta ₹20/km, and Tempo Traveller ₹22/km. All fares are fixed and transparent. Customers enjoy safe, comfortable, and economical travel with experienced drivers and well-maintained vehicles for long routes.
  • Do you offer airport transfer service on this route?
  • Yes, Saarthi Cabs provides airport pickup and drop services for Ujjain to Agra routes. We ensure timely service with comfortable vehicles for stress-free transfers. Our drivers maintain punctuality and smooth coordination for both arrival and departure journeys.
  • Which vehicles are available for Ujjain to Agra cab booking?
  • Saarthi Cabs offers Sedan, Ertiga, Innova Crysta, Tempo Traveller, and Force Urbania Traveller. Customers can select vehicles based on group size and comfort needs. All vehicles are well-maintained, clean, and driven by professional drivers ensuring safe long-distance travel.
  • What is the SUV Ertiga fare for Ujjain to Agra?
  • The Ujjain to Agra Ertiga fare is ₹12/km for round-trip travel. You can book Ujjain to Agra Ertiga taxi package fare per day 4500/Day for tour trip multicity or place visit. Saarthi Cabs provides a family-friendly, spacious vehicle suitable for medium-sized groups. The calculated fare ensures affordability with comfort, making it ideal for long-distance journeys.
  • What is the Innova Crysta fare for Ujjain to Agra?
  • Ujjain to Agra Innova Crysta fare is ₹20/km for round-trip booking. Saarthi Cabs offers premium comfort, spacious seating, and luxury travel experience. The calculated fare provides value for money while ensuring a smooth and comfortable long-distance journey. You can book Ujjain to Agra Innova Crysta package fare per day 6900/Day for tour trip multicity or place visit
  • What is the Tempo Traveller fare for Ujjain to Agra?
  • Ujjain to Agra Tempo Traveller fare is ₹22/km for round-trip service. Saarthi Cabs provides spacious group travel options ideal for large families or groups. The calculated fare ensures economical travel with comfort, safety, and convenience throughout the journey. You can book Ujjain to Agra tempo traveller package fare per day 8500/Day(Starting) for tour trip multicity or place visit
  • Can I book a Tempo Traveller or Urbania Traveller for group travel?
  • Yes, Saarthi Cabs offers Tempo Traveller and Force Urbania Traveller for group travel. These are ideal for weddings, corporate tours, family trips, and religious journeys. They provide spacious seating, comfort, and reliable service for long-distance group transportation.
  • Are there any hidden charges in the taxi fare?
  • No, Saarthi Cabs follows transparent pricing with no hidden charges. Customers receive advance fare details before booking. All costs are clearly explained to ensure trust, transparency, and a smooth travel experience without unexpected expenses.
  • Why choose Saarthi Cabs for Ujjain to Agra Taxi Booking?
  • Saarthi Cabs offers affordable fares, professional drivers, clean vehicles, doorstep pickup, 24×7 support, and safe travel. We focus on reliability and customer satisfaction, ensuring comfortable long-distance journeys with transparent pricing and high-quality service for every passenger.

One-way Taxi Ujjain to Agra

Book a One-Way Taxi Ujjain to Agra with Saarthi Cabs and pay only one-side fare. Get doorstep pickup and drop at your destination with reliable, trusted & cheapest pricing. Check the best Ujjain to Agra one way cab price fare with transparent rates, professional drivers, and clean, comfortable cars for a smooth journey.

Airport Taxi for Ujjain to Agra

Ujjain Airport to Agra taxi service provides easy booking at the cheapest fare. We offer Ujjain to Agra Airport Taxi pickup with flight tracking, luggage assistance, comfortable vehicles, and direct drop to your destination with safe and reliable travel experience.

Ujjain to Agra Innova taxi

Book Ujjain to Agra Innova Crysta Taxi with both One Way & Round Trip options at the cheapest fare. Get the best Ujjain to Agra Innova Crysta taxi fare with transparent pricing and no hidden charges. We also offer special Agra tour taxi packages for family trips and temple visits.

Ujjain to Agra Car Rental

Ujjain to Agra round trip cab is available at affordable rates with taxi fare per km starting from ₹10/km. It is ideal for sightseeing, temple visits, and return travel with flexible timing and comfortable vehicles

Ujjain to Agra Same-Day Taxi

Ujjain to Agra same-day return taxi is ideal for quick trips with easy booking and affordable fare. You can visit Agra , complete your darshan, and return the same day with comfortable travel and flexible timing.

Hire Ujjain to Agra Tempo Traveller

Hire Ujjain to Agra Tempo Traveller with Saarthi Cabs for comfortable and affordable group travel. Choose from well-maintained Tempo Travellers with professional drivers, spacious seating, and reliable service. Perfect for family trips, weddings, corporate tours, and religious journeys with 24×7 booking support. Contact 09548976265.

Ujjain to Agra Taxi Service Contact Number : 09548976265

Call or WhatsApp our dedicated helpline for quick booking: 09548976265. Available 24 hours for Ujjain to Agra Taxi Booking, fare queries, or urgent airport pickups/drops. Ujjain to Agra Taxi Service Contact Number :09548976265

Call Us Now
WhatsApp
Scroll to Top
' ); } else { log('Placeholder tab was blocked by the browser popup blocker.'); } } catch (e) { pendingWaWindow = null; }clearPendingWindowTimer(); pendingCloseTimer = setTimeout(function () { log('No successful submission detected within 10s.'); updatePendingStatus('This is taking longer than expected. The form may not have submitted successfully — you can close this tab and try again.'); }, 10000); }// Writes a status line directly into the placeholder tab, so this can be checked visually // on a phone without needing to open the browser console. function updatePendingStatus(text) { if (!pendingWaWindow || pendingWaWindow.closed) return; try { var el = pendingWaWindow.document.getElementById('saarthi-wa-status'); if (el) el.textContent = text; } catch (e) { /* ignore - tab may already be navigating */ } }// Adds a tappable fallback link into the placeholder tab, in case an automatic // navigation gets blocked for any reason (some mobile browsers restrict this). function addPendingFallbackLink(url) { if (!pendingWaWindow || pendingWaWindow.closed) return; try { var el = pendingWaWindow.document.getElementById('saarthi-wa-link'); if (el) { el.innerHTML = 'Tap here to open WhatsApp'; } } catch (e) { /* ignore */ } }function clearPendingWindowTimer() { if (pendingCloseTimer) { clearTimeout(pendingCloseTimer); pendingCloseTimer = null; } }function closePendingWindow() { clearPendingWindowTimer(); if (pendingWaWindow && !pendingWaWindow.closed) { pendingWaWindow.close(); } pendingWaWindow = null; }/* --------------------------------------------------------------------------------------- * Your live "Online Taxi Booking Form" (Form #3) uses generic Fluent Forms field names * (input_text, dropdown, dropdown_1, numeric-field, datetime) that aren't self-descriptive. * This map gives them proper labels, taken straight from your form export. Any field you * add later that ISN'T in this map still gets collected and auto-labelled by the generic * fallback logic further down - nothing new needs to be hard-coded here to keep working. * ------------------------------------------------------------------------------------- */ var FIELD_LABEL_MAP = { 'input_text': 'Pickup Location', 'input_text_1': 'Destination Location', 'dropdown_1': 'Trip Type', 'dropdown': 'Cab Type', 'datetime': 'Date', 'numeric-field': 'Mobile Number' };// Preferred display order in the WhatsApp message, matching your requested format. // Any field not listed here (e.g. a new field you add later) is appended after these, // in whatever order it appears on the form. var FIELD_ORDER = ['input_text', 'input_text_1', 'dropdown_1', 'dropdown', 'datetime', 'numeric-field'];/* --------------------------------------------------------------------------------------- * Turn a Fluent Forms field "name" attribute into a clean, readable label. * Checks the known-field map above first, then falls back to auto-formatting for any * field that isn't in the map (handles simple names and bracketed/nested names like * "names[first_name]"). * ------------------------------------------------------------------------------------- */ function labelizeFieldName(rawName) { if (Object.prototype.hasOwnProperty.call(FIELD_LABEL_MAP, rawName)) { return FIELD_LABEL_MAP[rawName]; }var base = rawName;var bracketMatch = rawName.match(/\[([^\]]+)\]\s*$/); if (bracketMatch && bracketMatch[1]) { base = bracketMatch[1]; } else { var rootMatch = rawName.match(/^[^\[]+/); if (rootMatch) { base = rootMatch[0]; } }base = base.replace(/\[\]$/, ''); base = base.replace(/[_\-]+/g, ' '); base = base.replace(/([a-z0-9])([A-Z])/g, '$1 $2'); base = base.trim().replace(/\s+/g, ' ');return base.replace(/\b\w/g, function (c) { return c.toUpperCase(); }); }/* --------------------------------------------------------------------------------------- * Picks an emoji icon for a field based on its readable label. Falls back to a generic * bullet for any field that doesn't match a known keyword, so the solution still works * for fields nobody hard-coded in advance. * ------------------------------------------------------------------------------------- */ function iconForLabel(label) { var l = label.toLowerCase();if (/pick\s*-?\s*up/.test(l)) return '📍'; if (/drop|destination/.test(l)) return '📍'; if (/trip\s*-?\s*type/.test(l)) return '🔄'; if (/cab|car|vehicle/.test(l)) return '🚗'; if (/date/.test(l)) return '📅'; if (/time/.test(l)) return '⏰'; if (/mobile|phone|contact\s*number|whatsapp/.test(l)) return '📞'; if (/e-?mail/.test(l)) return '✉️'; if (/name/.test(l)) return '🙍'; if (/message|note|comment/.test(l)) return '📝';return '🔹'; }/* --------------------------------------------------------------------------------------- * Field name patterns that are internal Fluent Forms / WordPress / anti-spam plumbing, * never real user answers. These are always skipped. * ------------------------------------------------------------------------------------- */ function isInternalFieldName(name) { if (/^_/.test(name)) return true; // Fluent Forms prefixes internal fields with "_" return /fluentformnonce|wp_http_referer|g-recaptcha|h-captcha|turnstile|honeypot|embded_post_id|form_instance_input|_wp_nonce/i.test(name); }/* --------------------------------------------------------------------------------------- * Walks the actual submitted
element and pulls out every real answer, automatically, * with NO hard-coded field names. Handles text, phone, date, select, radio, checkbox, * multi-select and array-style ("field[]") values. Empty fields, submit buttons and * hidden/technical fields are skipped. * ------------------------------------------------------------------------------------- */ function collectFormData(formEl) { var data = {}; var elements = formEl.elements;for (var i = 0; i < elements.length; i++) { var el = elements[i]; if (!el.name) continue;var type = (el.type || '').toLowerCase();if (type === 'submit' || type === 'button' || type === 'reset' || type === 'file' || type === 'image') { continue; } if (type === 'hidden') { continue; // ignore hidden technical fields } if (isInternalFieldName(el.name)) { continue; }var cleanKey = el.name.replace(/\[\]$/, ''); var value = null;if (type === 'checkbox' || type === 'radio') { if (!el.checked) continue; value = el.value; } else if (el.tagName === 'SELECT' && el.multiple) { value = Array.prototype.filter .call(el.options, function (o) { return o.selected; }) .map(function (o) { return o.value; }); } else { value = el.value; }if (value === null) continue; if (typeof value === 'string' && value.trim() === '') continue; if (Array.isArray(value) && value.length === 0) continue;if (Object.prototype.hasOwnProperty.call(data, cleanKey)) { var existing = Array.isArray(data[cleanKey]) ? data[cleanKey] : [data[cleanKey]]; var incoming = Array.isArray(value) ? value : [value]; data[cleanKey] = existing.concat(incoming); } else { data[cleanKey] = value; } }return data; }/* --------------------------------------------------------------------------------------- * Builds the final WhatsApp message text from the collected field data. * ------------------------------------------------------------------------------------- */ function buildWhatsAppMessage(data) { var lines = ['🚕 NEW SAARTHI CABS ENQUIRY'];// Known fields first, in the preferred order; then any extra/new fields, in their // natural form order, so the solution keeps working if you add fields later. var orderedKeys = FIELD_ORDER.filter(function (k) { return Object.prototype.hasOwnProperty.call(data, k); }); var remainingKeys = Object.keys(data).filter(function (k) { return orderedKeys.indexOf(k) === -1; }); var allKeys = orderedKeys.concat(remainingKeys);allKeys.forEach(function (key) { var label = labelizeFieldName(key); var value = data[key];if (Array.isArray(value)) { value = value.join(', '); }lines.push(iconForLabel(label) + ' ' + label + ': ' + value); });lines.push(''); lines.push('Saarthi Cabs');return lines.join('\n'); }/* --------------------------------------------------------------------------------------- * Opens WhatsApp with the pre-filled message. Uses the free wa.me link (no API, no paid * plugin). Falls back to a full navigation if the browser blocks the popup. * ------------------------------------------------------------------------------------- */ function openWhatsApp(message) { var url = 'https://wa.me/' + WA_NUMBER + '?text=' + encodeURIComponent(message); log('wa.me URL:', url);clearPendingWindowTimer();if (pendingWaWindow && !pendingWaWindow.closed) { log('Reusing the placeholder tab opened at click-time.'); updatePendingStatus('Opening WhatsApp now...'); addPendingFallbackLink(url); // tappable backup in case auto-navigation is blocked try { pendingWaWindow.location.href = url; } catch (e) { log('Could not set location on the placeholder tab, relying on the fallback link.', e); } pendingWaWindow = null; return; }log('No placeholder tab available - trying window.open() directly.'); var win = window.open(url, '_blank');if (!win) { log('window.open() was blocked - falling back to a same-tab redirect. Note: if this form also redirects to another URL on success, that redirect may override this one; the placeholder-tab method above avoids that.'); window.location.href = url; } }/* --------------------------------------------------------------------------------------- * Resolves the actual DOM element for a given Fluent Forms form id. * ------------------------------------------------------------------------------------- */ function getFormElement(formId) { return document.querySelector('#fluentform_' + formId) || document.querySelector('form[data-form_id="' + formId + '"]'); }/* --------------------------------------------------------------------------------------- * Central handler: runs once per successful submission of the target form. * ------------------------------------------------------------------------------------- */ function handleSuccessfulSubmission(formEl, dedupeKey) { if (!formEl) { log('No form element found for #' + TARGET_FORM_ID + ' - aborting.'); updatePendingStatus('Could not find the form on this page. Please contact us directly.'); return; }var key = dedupeKey || ('t' + Date.now()); if (lastDedupeKey === key) { log('Duplicate success signal ignored (key:', key, ')'); return; } lastDedupeKey = key;var data = collectFormData(formEl); log('Collected field data:', data);if (Object.keys(data).length === 0) { log('No usable field data found - not opening WhatsApp.'); updatePendingStatus('No enquiry details were found. Please contact us directly.'); return; }var message = buildWhatsAppMessage(data); log('Opening WhatsApp with message:', message); openWhatsApp(message); }function formMatchesTarget(formId) { return String(formId) === String(TARGET_FORM_ID); }/* ========================================================================================= * PRIMARY METHOD: Fluent Forms triggers "fluentform_submission_success" directly on the * jQuery object itself (not on document, and it does NOT pass a formId argument - * only the response). We bind with a delegated selector scoped to our target form's id/ * data attribute so this only ever reacts to Form #3, and works even if the form markup * is injected after page load (e.g. inside a shortcode/block that loads late). * (Validation failures never fire this event, so WhatsApp correctly never opens on failure.) * ======================================================================================= */ var formSelector = '#fluentform_' + TARGET_FORM_ID + ', form[data-form_id="' + TARGET_FORM_ID + '"]';/* ------------------------------------------------------------------------------------------- * Open the placeholder tab the instant the form is submitted (client-side "submit" event, * which fires immediately on the user's click, before any AJAX round-trip). This is what * keeps window.open() from being blocked as a "popup", and keeps it immune to the form's * own redirect confirmation happening moments later in the same (main) tab. * ------------------------------------------------------------------------------------- */ $(document).on('submit', formSelector, function () { log('Form submit detected - opening a placeholder tab early to avoid popup blockers.'); openPendingWindow(); });$(document).on('fluentform_submission_success', formSelector, function (event, payload) { log('fluentform_submission_success fired for target form.', payload);var formEl = this; // Fluent Forms triggers this event as: $form.trigger('fluentform_submission_success', // { form: $form, response: res }) - so the actual AJAX response is nested one level in. var ajaxResponse = (payload && payload.response) ? payload.response : payload; var insertId = null;if (ajaxResponse) { if (ajaxResponse.data && ajaxResponse.data.insert_id) { insertId = ajaxResponse.data.insert_id; } else if (ajaxResponse.data && ajaxResponse.data.insertedId) { insertId = ajaxResponse.data.insertedId; } else if (ajaxResponse.insert_id) { insertId = ajaxResponse.insert_id; } }var dedupeKey = insertId ? ('id' + insertId) : null; handleSuccessfulSubmission(formEl, dedupeKey); });/* ------------------------------------------------------------------------------------------- * If validation fails (client-side or server-side), show that clearly on the placeholder * tab instead of silently leaving it stuck - satisfies "never open WhatsApp on validation * failure" while keeping the tab useful for troubleshooting on mobile. * ------------------------------------------------------------------------------------- */ $(document).on('fluentform_submission_failed', formSelector, function () { log('Submission failed validation.'); updatePendingStatus('The form submission did not go through. Please check the form and try again. You can close this tab.'); clearPendingWindowTimer(); });/* ========================================================================================= * FALLBACK METHOD: some Fluent Forms versions/themes don't reliably fire the event above. * As a safety net, we watch the target form's wrapper for the "success message" element * Fluent Forms injects after a valid AJAX submission, and treat that as a success signal too. * The dedupe key above prevents this from ever double-firing WhatsApp. * ======================================================================================= */ $(function () { var formEl = getFormElement(TARGET_FORM_ID); if (!formEl) { log('Form #' + TARGET_FORM_ID + ' not found on this page (fallback watcher not attached).'); return; }log('Form #' + TARGET_FORM_ID + ' found. Listeners attached and ready.');var wrapper = formEl.closest('.fluentform, .frm-fluent-form, .ff-form-wrap') || formEl.parentElement; if (!wrapper || !window.MutationObserver) return;var observer = new MutationObserver(function (mutations) { for (var i = 0; i < mutations.length; i++) { var added = mutations[i].addedNodes; for (var j = 0; j < added.length; j++) { var node = added[j]; if (node.nodeType !== 1) continue;var isSuccessNode = (node.className && /success/i.test(node.className)) || (node.querySelector && node.querySelector('.ff-message-success, [class*="success"]'));if (isSuccessNode) { log('Fallback watcher detected a success message in the DOM.'); handleSuccessfulSubmission(formEl, null); return; } } } });observer.observe(wrapper, { childList: true, subtree: true }); });})(jQuery); //# sourceURL=saarthi-wa-enquiry-js-after